public async Task <ActionResult <UserInvite> > InviteUser(UserInviteRequest userInviteRequest) { return(await _userManagementService .InviteUser(userInviteRequest.Email, User.Identity.Name, userInviteRequest.RoleId) .HandleFailuresOrOk()); }
public async Task <UserInviteResponse> InviteUser(UserInviteRequest request) { var response = new UserInviteResponse(); var currentUser = _cacheManager.GetCachedCurrentUser(request.CurrentUserId); if (!currentUser.IsAdmin) { response.SetInvalid(); return(response); } if (await _organizationRepository.Any(x => x.Id == currentUser.OrganizationId && !x.IsActive)) { response.SetInvalid(); response.ErrorMessages.Add("organization_not_found"); return(response); } var user = await _userRepository.Select(x => x.Email == request.Email); if (user.IsExist()) { response.ErrorMessages.Add("email_already_invited"); response.Status = ResponseStatus.Invalid; return(response); } var invitedUser = _userFactory.CreateEntityFromRequest(request, currentUser.Organization, _cryptoHelper.GetSaltAsString()); invitedUser.InvitationToken = Guid.NewGuid(); invitedUser.InvitedAt = DateTime.UtcNow; invitedUser.InvitedByUserId = currentUser.Id; invitedUser.InvitedByUserUid = currentUser.Uid; invitedUser.InvitedByUserName = currentUser.Name; var id = await _userRepository.Insert(request.CurrentUserId, invitedUser); if (id > 0) { //todo:send invite email response.Status = ResponseStatus.Success; return(response); } response.Status = ResponseStatus.Failed; return(response); }
public User CreateEntityFromRequest(UserInviteRequest request, CurrentOrganization organization, string salt) { var entity = new User(); entity.FirstName = request.FirstName; entity.LastName = request.LastName; entity.Name = MapName(request.FirstName, request.LastName); entity.Email = request.Email; entity.ObfuscationSalt = salt; entity.IsActive = true; entity.OrganizationId = organization.Id; entity.OrganizationUid = organization.Uid; entity.OrganizationName = organization.Name; return(entity); }
public async Task <IActionResult> Invite(InviteModel model) { if (model.IsNotValid()) { model.SetInputModelValues(); return(View(model)); } var request = new UserInviteRequest(CurrentUser.Id, model.OrganizationUid, model.Email, model.FirstName, model.LastName); var response = await OrganizationService.InviteUser(request); if (response.Status.IsNotSuccess) { model.MapMessages(response); model.SetInputModelValues(); return(View(model)); } CurrentUser.IsActionSucceed = true; return(Redirect("/User/InviteDone")); }