diff --git a/templates/Coalesce.Vue.Template/content/.vscode/settings.json b/templates/Coalesce.Vue.Template/content/.vscode/settings.json index 89b10d00b..5f6056a77 100644 --- a/templates/Coalesce.Vue.Template/content/.vscode/settings.json +++ b/templates/Coalesce.Vue.Template/content/.vscode/settings.json @@ -1,5 +1,6 @@ { "typescript.tsdk": "Coalesce.Starter.Vue.Web\\node_modules\\typescript\\lib", + "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, diff --git a/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Auth/InvitationService.cs b/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Auth/InvitationService.cs index 822bf00dd..3f6db87e6 100644 --- a/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Auth/InvitationService.cs +++ b/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Auth/InvitationService.cs @@ -13,11 +13,12 @@ IUrlHelper urlHelper private IDataProtector GetProtector() => dataProtector.CreateProtector("invitations"); public async Task CreateAndSendInvitation( - string tenantId, string email, Role[] roles ) { + var tenantId = db.TenantIdOrThrow; + if (roles.Any(r => r.TenantId != tenantId)) return "Role/tenant mismatch"; var invitation = new UserInvitation @@ -34,6 +35,7 @@ Role[] roles if (user is not null) { + // Immediately accept the invitation if the user's email address already exists return await AcceptInvitation(invitation, user); } @@ -47,12 +49,10 @@ Role[] roles public async Task AcceptInvitation( UserInvitation invitation, - User? acceptingUser + User acceptingUser ) { var tenant = await db.Tenants.FindAsync(invitation.TenantId); - - if (acceptingUser is null) return "User not found"; if (tenant is null) return "Tenant not found"; // Note: `acceptingUser` will be untracked after ForceSetTenant. diff --git a/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Models/Tenancy/Tenant.cs b/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Models/Tenancy/Tenant.cs index 6f8019f95..5a4ec35b9 100644 --- a/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Models/Tenancy/Tenant.cs +++ b/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Models/Tenancy/Tenant.cs @@ -62,7 +62,7 @@ public static async Task Create( db.ForceSetTenant(tenant.TenantId); new DatabaseSeeder(db).SeedNewTenant(tenant); - return await invitationService.CreateAndSendInvitation(tenant.TenantId, adminEmail, db.Roles.ToArray()); + return await invitationService.CreateAndSendInvitation(adminEmail, db.Roles.ToArray()); } #endif } diff --git a/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Models/User.cs b/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Models/User.cs index 38c5f6da0..5aa5f60ff 100644 --- a/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Models/User.cs +++ b/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Data/Models/User.cs @@ -147,7 +147,7 @@ public static async Task InviteUser( ) { Role[] roles = role is null ? [] : [role]; - return await invitationService.CreateAndSendInvitation(db.TenantIdOrThrow, email, roles); + return await invitationService.CreateAndSendInvitation(email, roles); } #endif #endif diff --git a/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Web/.vscode/settings.json b/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Web/.vscode/settings.json index 47424f74b..81bad0010 100644 --- a/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Web/.vscode/settings.json +++ b/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Web/.vscode/settings.json @@ -1,5 +1,6 @@ { "typescript.tsdk": "node_modules\\typescript\\lib", + "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, diff --git a/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Web/Pages/Invitation.cshtml.cs b/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Web/Pages/Invitation.cshtml.cs index 7fc5455fa..ead44f301 100644 --- a/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Web/Pages/Invitation.cshtml.cs +++ b/templates/Coalesce.Vue.Template/content/Coalesce.Starter.Vue.Web/Pages/Invitation.cshtml.cs @@ -39,7 +39,7 @@ public async Task OnPost() db.ForceSetTenant(Invitation.TenantId); var user = await db.Users.FindAsync(User.GetUserId()); - var result = await invitationService.AcceptInvitation(Invitation, user); + var result = await invitationService.AcceptInvitation(Invitation, user!); if (!result.WasSuccessful) { ModelState.AddModelError(nameof(Code), result.Message);