public IUserService CreateUserServiceNoPermissions(User user, InventorySoftwareType version, bool storePassword, string password = null) { var userEntity = _context.Users.Include(e => e.Permission).FirstOrDefault(e => e.UserName == user.UserName); if (userEntity != null) { return(this.CreateServiceDefualtPermissions(userEntity, storePassword, version, password)); } else { return(this.CreateServiceNewUserEntity(user, storePassword, version, password: password)); } }
public LogInResponce LogInWithPassword(string username, string password, bool storePassword, InventorySoftwareType version) { try { var result = this._domainOperations.Authenticate(username, password); switch (result.Status) { case AuthenticationStatus.Authenticated: { var user = ((AuthenticatedResult)result).User; string permission = ((AuthenticatedResult)result).Permission; var service = this._userServiceProvider.CreateUserServiceUserAuthenticated(user, version, storePassword, permission, password); return(new LogInResponce(service)); } case AuthenticationStatus.InvalidCredentials: { return(new LogInResponce("Invalid Credentials,please try logging in again without saved password")); } case AuthenticationStatus.UserNotFound: { return(new LogInResponce("User was no found on domain, Please contact administrator")); } case AuthenticationStatus.NoPermissions: { var user = ((NoPermissionsResult)result).User; var service = this._userServiceProvider.CreateUserServiceNoPermissions(user, version, storePassword, password); return(new LogInResponce(service)); } default: { return(new LogInResponce("Internal Error, Please contact administrator")); } } } catch (LDAPCommunicationException e) { throw e; } }
public UserService(User currentUser, Session currentSession, Permission userPermission, InventorySoftwareType softwareVersion) { this.CurrentUser = currentUser; this.CurrentSession = currentSession; this.UserPermission = userPermission; this.SoftwareVersion = softwareVersion; this.Initialize(); }
private IUserService CreateService(User user, bool storePassword, string permission, InventorySoftwareType version, string password = null) { if (user.Permission.Name == permission) { var userPermission = user.Permission; if (storePassword && !string.IsNullOrEmpty(password)) { this.GeneratePasswordEncryption(password, user); } Session session = new Session(user); _context.Sessions.Add(session); user.SoftwareVersion = version; _context.Entry <User>(user).State = EntityState.Modified; _context.SaveChanges(); _context.Entry <User>(user).State = EntityState.Detached; _context.Entry <Permission>(userPermission).State = EntityState.Detached; _context.Entry <Session>(session).State = EntityState.Detached; return(new UserService(user, session, userPermission, user.SoftwareVersion)); } else { var permissionEnity = _context.Permissions.First(e => e.Name == permission); if (permissionEnity != null) { user.Permission = permissionEnity; if (storePassword && !string.IsNullOrEmpty(password)) { this.GeneratePasswordEncryption(password, user); } Session session = new Session(user); user.SoftwareVersion = version; _context.Entry <User>(user).State = EntityState.Modified; _context.Sessions.Add(session); _context.SaveChanges(); _context.Entry <User>(user).State = EntityState.Detached; _context.Entry <Permission>(permissionEnity).State = EntityState.Detached; _context.Entry <Session>(session).State = EntityState.Detached; return(new UserService(user, session, permissionEnity, user.SoftwareVersion)); } else { Permission newPermission = new Permission() { Name = permission, Description = "" }; _context.Permissions.Add(newPermission); user.Permission = newPermission; if (storePassword && !string.IsNullOrEmpty(password)) { this.GeneratePasswordEncryption(password, user); } Session session = new Session(user); _context.Sessions.Add(session); user.SoftwareVersion = version; _context.Entry <User>(user).State = EntityState.Modified; _context.SaveChanges(); _context.Entry <User>(user).State = EntityState.Detached; _context.Entry <Permission>(newPermission).State = EntityState.Detached; _context.Entry <Session>(session).State = EntityState.Detached; return(new UserService(user, session, newPermission, user.SoftwareVersion)); } } }
private IUserService CreateServiceDefualtPermissions(User userEntity, bool storePassword, InventorySoftwareType version, string password = null) { var permission = this._context.Permissions.FirstOrDefault(e => e.Name == LogInService.DefaultDomainPermissions); if (permission != null) { if (this._domainManager.AddUserToGroup(userEntity.UserName, LogInService.DefaultDomainPermissions)) { userEntity.Permission = permission; if (storePassword && !string.IsNullOrEmpty(password)) { this.GeneratePasswordEncryption(password, userEntity); } Session session = new Session(userEntity); userEntity.SoftwareVersion = version; _context.Entry <User>(userEntity).State = EntityState.Modified; _context.Sessions.Add(session); _context.SaveChanges(); _context.Entry <User>(userEntity).State = EntityState.Detached; _context.Entry <Permission>(permission).State = EntityState.Detached; _context.Entry <Session>(session).State = EntityState.Detached; return(new UserService(userEntity, session, permission, userEntity.SoftwareVersion)); } else { return(null); } } else { return(null); } }