fix(workspace-invite): inconsistence in roles names

This commit is contained in:
2026-04-30 15:45:32 -04:00
parent 07458c1541
commit ace0279bd0
7 changed files with 216 additions and 210 deletions

View File

@@ -2,10 +2,10 @@
public static class KnownRoles
{
public const string Administrator = nameof(Administrator);
public const string Manager = nameof(Manager);
public const string Client = nameof(Client);
public const string Provider = nameof(Provider);
public const string WorkspaceMember = nameof(WorkspaceMember);
public const string Developer = nameof(Developer);
public const string Administrator = "administrator";
public const string Manager = "manager";
public const string Client = "client";
public const string Provider = "provider";
public const string WorkspaceMember = "workspace-member";
public const string Developer = "developer";
}

View File

@@ -0,0 +1,6 @@
namespace Socialize.Api.Modules.Workspaces.Data;
public static class WorkspaceInviteStatuses
{
public const string Pending = "Pending";
}

View File

@@ -24,7 +24,7 @@ public class CreateWorkspaceInviteRequestValidator
public CreateWorkspaceInviteRequestValidator()
{
RuleFor(x => x.Email).NotEmpty().MaximumLength(256).EmailAddress();
RuleFor(x => x.Role).NotEmpty().Must(role => AllowedRoles.Contains(role));
RuleFor(x => x.Role).NotEmpty().Must(role => AllowedRoles.Contains(role)).WithMessage("A valid role should be specified");
}
}
@@ -65,7 +65,7 @@ public class CreateWorkspaceInviteHandler(
bool duplicateInvite = await dbContext.WorkspaceInvites.AnyAsync(
invite => invite.WorkspaceId == workspaceId &&
invite.Email == normalizedEmail &&
invite.Status == "Pending",
invite.Status == WorkspaceInviteStatuses.Pending,
ct);
if (duplicateInvite)
@@ -81,7 +81,7 @@ public class CreateWorkspaceInviteHandler(
WorkspaceId = workspaceId,
Email = normalizedEmail,
Role = normalizedRole,
Status = "Pending",
Status = WorkspaceInviteStatuses.Pending,
InvitedByUserId = User.GetUserId(),
CreatedAt = DateTimeOffset.UtcNow,
};

View File

@@ -29,7 +29,7 @@
const inviteForm = reactive({
email: '',
role: 'workspaceMember',
role: 'workspace-member',
});
const pendingInvites = computed(() =>
@@ -161,7 +161,7 @@
});
inviteForm.email = '';
inviteForm.role = 'workspaceMember';
inviteForm.role = 'workspace-member';
} catch (error) {
console.error('Failed to invite workspace member:', error);
}
@@ -330,7 +330,7 @@
<label class="field">
<span>{{ t('workspaceSettings.fields.memberRole') }}</span>
<select v-model="inviteForm.role">
<option value="workspaceMember">{{ t('workspaceSettings.roles.workspaceMember') }}</option>
<option value="workspace-member">{{ t('workspaceSettings.roles.workspace-member') }}</option>
<option value="client">{{ t('workspaceSettings.roles.client') }}</option>
<option value="provider">{{ t('workspaceSettings.roles.provider') }}</option>
</select>

View File

@@ -512,7 +512,7 @@
"manager": "Manager",
"client": "Client reviewer",
"provider": "Subcontractor",
"workspaceMember": "Workspace member"
"workspace-member": "Workspace member"
},
"summary": {
"name": "Name",

View File

@@ -512,7 +512,7 @@
"manager": "Gestionnaire",
"client": "Réviseur client",
"provider": "Sous-traitant",
"workspaceMember": "Membre de l'espace"
"workspace-member": "Membre de l'espace"
},
"summary": {
"name": "Nom",

View File

@@ -94,25 +94,25 @@ const routes = [
path: '/app/feedback',
name: 'developer-feedback',
component: DeveloperFeedbackListView,
meta: { requiresAuth: true, roles: ['Developer'] },
meta: { requiresAuth: true, roles: ['developer'] },
},
{
path: '/app/feedback/:id',
name: 'developer-feedback-detail',
component: DeveloperFeedbackDetailView,
meta: { requiresAuth: true, roles: ['Developer'] },
meta: { requiresAuth: true, roles: ['developer'] },
},
{
path: '/app/workspace-settings',
name: 'workspace-settings',
component: WorkspaceSettingsView,
meta: { requiresAuth: true, roles: ['Administrator', 'Manager'] },
meta: { requiresAuth: true, roles: ['administrator', 'manager'] },
},
{
path: '/app/workspaces/new',
name: 'workspace-create',
component: WorkspaceCreateView,
meta: { requiresAuth: true, roles: ['Administrator', 'Manager'] },
meta: { requiresAuth: true, roles: ['administrator', 'manager'] },
},
{
path: '/app/settings',
@@ -132,13 +132,13 @@ const routes = [
path: 'workspaces',
name: 'settings-workspaces',
component: WorkspaceSettingsView,
meta: { requiresAuth: true, roles: ['Administrator', 'Manager'] },
meta: { requiresAuth: true, roles: ['administrator', 'manager'] },
},
{
path: 'integrations',
name: 'settings-integrations',
component: IntegrationsSettingsView,
meta: { requiresAuth: true, roles: ['Administrator', 'Manager'] },
meta: { requiresAuth: true, roles: ['administrator', 'manager'] },
},
],
},