protected override BaseResponse <EmptyViewModel> ExecuteCore(RegistrationViewModel request) { if (repository.Users.Any(x => x.Email.ToLower() == request.Email.ToLower())) { return(GetResponseFailed(Resources.Errors_EmailAlreadyExists).WithStatusCode(ResponseStatusCodes.Ok)); } var user = registrationService.CreateUser(request); user.PasswordHash = registrationService.HashPassword(user, request.Password); user.UserName = request.Email; user.SecurityStamp = Guid.NewGuid().ToString(); repository.Users.Add(user); repository.SaveChanges(); if (request.IsInvitation) { var pendingInvitation = invitationService.GetInvitation(x => x.Email == request.Email); invitationService.AcceptInvitation(user, pendingInvitation); repository.SaveChanges(); } return(GetResponseSuccess(message: Resources.RegistrationSuccessful)); }
protected override BaseResponse <EmptyViewModel> ExecuteCore(PendingInvitationRequestViewModel request) { var pendingInvitation = invitationService.GetInvitation(x => x.Token == request.Token); if (pendingInvitation is null) { return(GetResponseFailed(Resources.Errors_InvitationInvalid).WithStatusCode(ResponseStatusCodes.Ok)); } if (pendingInvitation.Project.Collaborators.Select(x => x.Collaborator.Email).Contains(CurrentApplicationUser.Email)) { return(GetResponseFailed(Resources.Errors_CollaboratorAlreadyExists).WithStatusCode(ResponseStatusCodes.Ok)); } if (pendingInvitation.Email != CurrentApplicationUser.Email) { return(GetResponseFailed(Resources.Errors_InvitationUnauthorized).WithStatusCode(ResponseStatusCodes.Ok)); } invitationService.AcceptInvitation(CurrentApplicationUser, pendingInvitation); repository.SaveChanges(); return(GetResponseSuccess(message: Resources.Invitation_Accepted)); }
private async Task RegisterInvitedUserAsync(RegisterInvitationModel registerInvitationModel) { var invitation = await _invitationService.GetInvitation(registerInvitationModel.InvitationId); if (!invitation.Used) { var newUser = await CreateNewUser(registerInvitationModel); await CreateNewMember(newUser); await _invitationService.AcceptInvitation(newUser.Id, registerInvitationModel.InvitationId); } else { throw new InvalidOperationException($"Unable to register user. Invitation with id {registerInvitationModel.InvitationId} was already used."); } }