public async Task <IActionResult> CreateUser() { var roles = await _cache.Roles(); var viewModel = new CreateUserViewModel() { RolesLookup = roles.Select(r => new SelectListItem(r.Name, r.Id)).ToList() }; return(View(viewModel)); }
public async Task <GetUserResponse> GetUser(GetUserRequest request) { var response = new GetUserResponse(); var userRoles = await _cache.UserRoles(); var roles = await _cache.Roles(); var permissions = await _cache.Permissions(); using (var uow = _uowFactory.GetUnitOfWork()) { var user = await uow.UserRepo.GetUserById(new Infrastructure.Repositories.UserRepo.Models.GetUserByIdRequest() { Id = request.UserId }); uow.Commit(); var usersRoles = userRoles.Where(ur => ur.User_Id == request.UserId).Select(ur => ur.Role_Id); response.Roles = roles.Where(r => usersRoles.Contains(r.Id)).ToList(); if (user == null) { response.Notifications.AddError($"Could not find user with Id {request.UserId}"); return(response); } response.User = user; return(response); } }
public async Task <GetProfileResponse> GetProfile() { var session = await _sessionService.GetAuthenticatedSession(); var user = session.User; var roles = await _cache.Roles(); var userRoles = await _cache.UserRoles(); var usersRoles = userRoles.Where(ur => ur.User_Id == session.User.Entity.Id).Select(ur => ur.Role_Id); return(new GetProfileResponse() { EmailAddress = user.Entity.Email_Address, FirstName = user.Entity.First_Name, LastName = user.Entity.Last_Name, MobileNumber = user.Entity.Mobile_Number, Username = user.Entity.Username, Roles = roles.Where(r => usersRoles.Contains(r.Id)).ToList() }); }
public async Task <GetSessionResponse> GetSession() { var response = new GetSessionResponse(); // get or create a new session var session = await _sessionProvider.Get <SessionEntity>(SessionConstants.SessionEntity); if (session == null) { // flush any authenticated cookies in the event the application restarts await _httpContextAccessor.HttpContext.SignOutAsync(); await _sessionProvider.Remove(SessionConstants.User); using (var uow = _uowFactory.GetUnitOfWork()) { session = await uow.SessionRepo.CreateSession(new Infrastructure.Repositories.SessionRepo.Models.CreateSessionRequest() { Created_By = ApplicationConstants.SystemUserId }); uow.Commit(); await _sessionProvider.Set(SessionConstants.SessionEntity, session); } } response.Id = session.Id; response.SessionLogId = await _sessionProvider.Get <int>(SessionConstants.SessionLogId); // get or hydrate user from session var user = await _sessionProvider.Get <User>(SessionConstants.User); if (user == null && session.User_Id.HasValue) { using (var uow = _uowFactory.GetUnitOfWork()) { user = new User(); user.Entity = await uow.UserRepo.GetUserById(new Infrastructure.Repositories.UserRepo.Models.GetUserByIdRequest() { Id = session.User_Id.Value }); uow.Commit(); var usersRoles = await _cache.UserRoles(); var userRoleIds = usersRoles.Where(ur => ur.User_Id == user.Entity.Id).Select(ur => ur.Role_Id); var rolePermissions = await _cache.RolePermissions(); var userRolePermissionIds = rolePermissions.Where(rc => userRoleIds.Contains(rc.Role_Id)).Select(rc => rc.Permission_Id); var permissionsLookup = await _cache.Permissions(); var userPermissionsData = permissionsLookup.Where(c => userRolePermissionIds.Contains(c.Id)); var rolesLookup = await _cache.Roles(); var userRolesData = rolesLookup.Where(r => userRoleIds.Contains(r.Id)); foreach (var userPermission in userPermissionsData) { user.PermissionKeys.Add(userPermission.Key); } foreach (var userRole in userRolesData) { user.RoleIds.Add(userRole.Id); } await _sessionProvider.Set(SessionConstants.User, user); } } response.User = user; return(response); }