- @foreach (var customField in Obj.CustomFields)
+ @foreach (var customField in customFields)
{
+ LabelChanged="@((newLabel) => Obj.UpdateCustomFieldLabel(customField.FieldKey, newLabel))"
+ OnDelete="@(() => Obj.RemoveCustomField(customField.FieldKey))" />
@if (customField.FieldType == "TextArea")
{
-
+
}
else if (customField.IsHidden || customField.FieldType == "Hidden" || customField.FieldType == "Password")
{
-
+
}
else
{
-
+
}
@@ -475,7 +477,7 @@ else
}
if (!string.IsNullOrEmpty(QuickCreateStateService.ServiceUrl))
{
- Obj.ServiceUrl = QuickCreateStateService.ServiceUrl;
+ Obj.SetFieldValue(FieldKey.LoginUrl, QuickCreateStateService.ServiceUrl);
}
// Clear the state after using it
@@ -728,35 +730,7 @@ else
///
private void AddCustomField((string Label, string FieldType) args)
{
- // Use a plain GUID for the TempId - no prefix needed.
- // Custom fields are identified by having FieldDefinitionId set (not FieldKey).
- var tempId = Guid.NewGuid().ToString();
- Obj.CustomFields.Add(new CustomFieldEdit
- {
- TempId = tempId,
- Label = args.Label,
- FieldType = args.FieldType,
- IsHidden = args.FieldType == "Hidden" || args.FieldType == "Password",
- Value = string.Empty
- });
- StateHasChanged();
- }
-
- ///
- /// Removes a custom field.
- ///
- private void RemoveCustomField(CustomFieldEdit field)
- {
- Obj.CustomFields.Remove(field);
- StateHasChanged();
- }
-
- ///
- /// Updates the label of a custom field.
- ///
- private void UpdateCustomFieldLabel(CustomFieldEdit field, string newLabel)
- {
- field.Label = newLabel;
+ Obj.AddCustomField(args.Label, args.FieldType);
StateHasChanged();
}
@@ -849,9 +823,10 @@ else
Show2FA = Obj.TotpCodes.Any();
ShowAttachments = Obj.Attachments.Any();
- if (Obj.ServiceUrl is null)
+ // Set default URL if not set
+ if (!Obj.HasFieldValue(FieldKey.LoginUrl))
{
- Obj.ServiceUrl = ItemService.DefaultServiceUrl;
+ Obj.SetFieldValue(FieldKey.LoginUrl, ItemService.DefaultServiceUrl);
}
}
@@ -881,8 +856,8 @@ else
{
Obj = ItemEdit.FromEntity(CreateNewItemObject());
- Obj.AliasBirthDate = string.Empty;
- Obj.ServiceUrl = ItemService.DefaultServiceUrl;
+ Obj.SetFieldValue(FieldKey.AliasBirthdate, string.Empty);
+ Obj.SetFieldValue(FieldKey.LoginUrl, ItemService.DefaultServiceUrl);
}
///
@@ -899,7 +874,8 @@ else
///
private void OnFocusUrlInput(FocusEventArgs e)
{
- if (Obj.ServiceUrl != ItemService.DefaultServiceUrl)
+ var currentUrl = Obj.GetFieldValue(FieldKey.LoginUrl);
+ if (currentUrl != ItemService.DefaultServiceUrl)
{
return;
}
@@ -936,20 +912,20 @@ else
private void ClearAliasFields()
{
- Obj.AliasFirstName = string.Empty;
- Obj.AliasLastName = string.Empty;
- Obj.AliasGender = string.Empty;
- Obj.AliasBirthDate = string.Empty;
+ Obj.SetFieldValue(FieldKey.AliasFirstName, string.Empty);
+ Obj.SetFieldValue(FieldKey.AliasLastName, string.Empty);
+ Obj.SetFieldValue(FieldKey.AliasGender, string.Empty);
+ Obj.SetFieldValue(FieldKey.AliasBirthdate, string.Empty);
StateHasChanged();
}
private bool HasAliasValues()
{
- return !string.IsNullOrWhiteSpace(Obj.AliasFirstName) ||
- !string.IsNullOrWhiteSpace(Obj.AliasLastName) ||
- !string.IsNullOrWhiteSpace(Obj.AliasGender) ||
- !string.IsNullOrWhiteSpace(Obj.AliasBirthDate);
+ return !string.IsNullOrWhiteSpace(Obj.GetFieldValue(FieldKey.AliasFirstName)) ||
+ !string.IsNullOrWhiteSpace(Obj.GetFieldValue(FieldKey.AliasLastName)) ||
+ !string.IsNullOrWhiteSpace(Obj.GetFieldValue(FieldKey.AliasGender)) ||
+ !string.IsNullOrWhiteSpace(Obj.GetFieldValue(FieldKey.AliasBirthdate));
}
private string GetToggleButtonClasses()
@@ -964,39 +940,45 @@ else
private async Task GenerateRandomAlias()
{
- string currentUsername = Obj.Username ?? string.Empty;
- string currentPassword = Obj.Password ?? string.Empty;
- string currentEmail = Obj.Email ?? string.Empty;
+ string currentUsername = Obj.GetFieldValue(FieldKey.LoginUsername);
+ string currentPassword = Obj.GetFieldValue(FieldKey.LoginPassword);
+ string currentEmail = Obj.GetFieldValue(FieldKey.LoginEmail);
var generatedItem = await ItemService.GenerateRandomIdentityAsync(Obj.ToEntity());
var generatedObj = ItemEdit.FromEntity(generatedItem);
- Obj.Username = currentUsername;
- Obj.Password = currentPassword;
- Obj.Email = currentEmail;
+ // Keep the current values if user has modified them
+ Obj.SetFieldValue(FieldKey.LoginUsername, currentUsername);
+ Obj.SetFieldValue(FieldKey.LoginPassword, currentPassword);
+ Obj.SetFieldValue(FieldKey.LoginEmail, currentEmail);
- Obj.AliasFirstName = generatedObj.AliasFirstName;
- Obj.AliasLastName = generatedObj.AliasLastName;
- Obj.AliasGender = generatedObj.AliasGender;
- Obj.AliasBirthDate = generatedObj.AliasBirthDate;
+ // Always update alias fields
+ Obj.SetFieldValue(FieldKey.AliasFirstName, generatedObj.GetFieldValue(FieldKey.AliasFirstName));
+ Obj.SetFieldValue(FieldKey.AliasLastName, generatedObj.GetFieldValue(FieldKey.AliasLastName));
+ Obj.SetFieldValue(FieldKey.AliasGender, generatedObj.GetFieldValue(FieldKey.AliasGender));
+ Obj.SetFieldValue(FieldKey.AliasBirthdate, generatedObj.GetFieldValue(FieldKey.AliasBirthdate));
+
+ var generatedUsername = generatedObj.GetFieldValue(FieldKey.LoginUsername);
+ var generatedPassword = generatedObj.GetFieldValue(FieldKey.LoginPassword);
+ var generatedEmail = generatedObj.GetFieldValue(FieldKey.LoginEmail);
if (string.IsNullOrWhiteSpace(currentUsername) || currentUsername == LastGeneratedUsername)
{
- Obj.Username = generatedObj.Username;
- LastGeneratedUsername = generatedObj.Username;
+ Obj.SetFieldValue(FieldKey.LoginUsername, generatedUsername);
+ LastGeneratedUsername = generatedUsername;
}
if (string.IsNullOrWhiteSpace(currentPassword) || currentPassword == LastGeneratedPassword)
{
- Obj.Password = generatedObj.Password;
- LastGeneratedPassword = generatedObj.Password;
+ Obj.SetFieldValue(FieldKey.LoginPassword, generatedPassword);
+ LastGeneratedPassword = generatedPassword;
IsPasswordVisible = true;
}
if (string.IsNullOrWhiteSpace(currentEmail) || currentEmail == LastGeneratedEmail || currentEmail.StartsWith("@"))
{
- Obj.Email = generatedObj.Email;
- LastGeneratedEmail = generatedObj.Email;
+ Obj.SetFieldValue(FieldKey.LoginEmail, generatedEmail);
+ LastGeneratedEmail = generatedEmail;
}
StateHasChanged();
@@ -1007,34 +989,38 @@ else
///
private async Task GenerateRandomUsername()
{
+ var aliasFirstName = Obj.GetFieldValue(FieldKey.AliasFirstName);
+ var aliasLastName = Obj.GetFieldValue(FieldKey.AliasLastName);
+ var aliasBirthDate = Obj.GetFieldValue(FieldKey.AliasBirthdate);
+
AliasVaultIdentity identity;
- if (string.IsNullOrWhiteSpace(Obj.AliasFirstName) && string.IsNullOrWhiteSpace(Obj.AliasLastName) && string.IsNullOrWhiteSpace(Obj.AliasBirthDate))
+ if (string.IsNullOrWhiteSpace(aliasFirstName) && string.IsNullOrWhiteSpace(aliasLastName) && string.IsNullOrWhiteSpace(aliasBirthDate))
{
var randomIdentity = await ItemService.GenerateRandomIdentityAsync(CreateNewItemObject());
var randomIdentityEdit = ItemEdit.FromEntity(randomIdentity);
identity = new AliasVaultIdentity
{
- FirstName = randomIdentityEdit.AliasFirstName ?? string.Empty,
- LastName = randomIdentityEdit.AliasLastName ?? string.Empty,
- BirthDate = randomIdentityEdit.AliasBirthDate ?? string.Empty,
- Gender = randomIdentityEdit.AliasGender ?? string.Empty,
- NickName = randomIdentityEdit.Username ?? string.Empty,
+ FirstName = randomIdentityEdit.GetFieldValue(FieldKey.AliasFirstName),
+ LastName = randomIdentityEdit.GetFieldValue(FieldKey.AliasLastName),
+ BirthDate = randomIdentityEdit.GetFieldValue(FieldKey.AliasBirthdate),
+ Gender = randomIdentityEdit.GetFieldValue(FieldKey.AliasGender),
+ NickName = randomIdentityEdit.GetFieldValue(FieldKey.LoginUsername),
};
}
else
{
identity = new AliasVaultIdentity
{
- FirstName = Obj.AliasFirstName ?? string.Empty,
- LastName = Obj.AliasLastName ?? string.Empty,
- BirthDate = Obj.AliasBirthDate ?? string.Empty,
- Gender = Obj.AliasGender ?? string.Empty,
- NickName = Obj.Username ?? string.Empty,
+ FirstName = aliasFirstName,
+ LastName = aliasLastName,
+ BirthDate = aliasBirthDate,
+ Gender = Obj.GetFieldValue(FieldKey.AliasGender),
+ NickName = Obj.GetFieldValue(FieldKey.LoginUsername),
};
}
- Obj.Username = await JsInteropService.GenerateRandomUsernameAsync(identity);
+ Obj.SetFieldValue(FieldKey.LoginUsername, await JsInteropService.GenerateRandomUsernameAsync(identity));
}
///
@@ -1127,4 +1113,5 @@ else
NavigationManager.NavigateTo("/items/" + Id);
}
+
}
diff --git a/apps/server/AliasVault.Client/wwwroot/css/tailwind.css b/apps/server/AliasVault.Client/wwwroot/css/tailwind.css
index 851f44ab9..a4ccb4b80 100644
--- a/apps/server/AliasVault.Client/wwwroot/css/tailwind.css
+++ b/apps/server/AliasVault.Client/wwwroot/css/tailwind.css
@@ -2164,6 +2164,10 @@ video {
padding-top: 2rem;
}
+.pr-8 {
+ padding-right: 2rem;
+}
+
.text-left {
text-align: left;
}