public async Task <CreateAdminUserResponse> CreateAdminUser(CreateAdminUserRequest request)
        {
            var response = new CreateAdminUserResponse();
            var username = request.Username;
            var session  = await _sessionManager.GetSession();

            var duplicateResponse = await _accountService.DuplicateUserCheck(new DuplicateUserCheckRequest()
            {
                Username = username
            });

            if (duplicateResponse.Notifications.HasErrors)
            {
                response.Notifications.Add(duplicateResponse.Notifications);
                return(response);
            }

            int userId;

            using (var uow = _uowFactory.GetUnitOfWork())
            {
                userId = await uow.UserRepo.CreateUser(new Repositories.DatabaseRepos.UserRepo.Models.CreateUserRequest()
                {
                    Username               = username,
                    First_Name             = username,
                    Password_Hash          = PasswordHelper.HashPassword(request.Password),
                    Created_By             = ApplicationConstants.SystemUserId,
                    Registration_Confirmed = true,
                    Is_Enabled             = true
                });

                await uow.UserRepo.CreateUserRole(new Repositories.DatabaseRepos.UserRepo.Models.CreateUserRoleRequest()
                {
                    User_Id    = userId,
                    Role_Id    = 1, // the first role should always be admin
                    Created_By = ApplicationConstants.SystemUserId
                });

                var sessionEntity = await uow.SessionRepo.AddUserToSession(new Repositories.DatabaseRepos.SessionRepo.Models.AddUserToSessionRequest()
                {
                    Id         = session.SessionEntity.Id,
                    User_Id    = userId,
                    Updated_By = ApplicationConstants.SystemUserId
                });

                await _sessionProvider.Set(SessionConstants.SessionEntity, sessionEntity);

                uow.Commit();
            }

            _cacheProvider.Set(CacheConstants.AdminUserExists, true);
            await _authenticationManager.SignIn(session.SessionEntity.Id);

            return(response);
        }
Beispiel #2
0
        public async Task <IActionResult> OnGet()
        {
            var response = await _adminService.CheckIfCanCreateAdminUser();

            if (!response.IsSuccessful)
            {
                AddNotifications(response);
                return(RedirectToHome());
            }
            FormData = new CreateAdminUserRequest();
            return(Page());
        }
Beispiel #3
0
 public CreateAdminUserModel(IAdminService adminService)
 {
     _adminService = adminService;
     FormData      = new CreateAdminUserRequest();
 }