public async Task <User> CreateNewUser(string sub, string role, string email) { var userRole = await _roles.FindByRole(role) ?? throw new NotFoundException(nameof(UserRole), $"role = {role}"); var exists = await Exists(sub); if (exists) { throw new Exception("User already exists"); } var u = new User { Sub = sub, Email = email, AllowNotifications = true, Role = userRole, IsActive = true }; _ctx.Users.Add(u); await _ctx.SaveChangesAsync(); return(u); }
public async Task <DomainUser> PromoteUser(PromoteUserCommand cmd) { var user = await _users.FindById(cmd.Id); if (user?.Role?.RoleName != Roles.User) { throw new EntityNotFoundException(nameof(user), $"(id == {cmd.Id} && role == user)"); } var modRole = await _roles.FindByRole(Roles.Moderator); user.Role = modRole; var promoted = await _users.UpdateUser(user); return(_mapper.Map <DomainUser>(promoted)); }