Exemple #1
0
 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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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"));
        }