/// <summary> /// Adds a new role to the user /// </summary> /// <param name="email">The user's email</param> /// <param name="roleName">The role to add to the user</param> /// <returns>Return true on successful operation, else a string with an error message</returns> public static UserRoleManagerResult AddRoleToUser(string email, string roleName) { UserRoleManagerResult userManagerResult = new UserRoleManagerResult(); try { using (AlenMotorsDbEntities alenMotorsDbEntities = new AlenMotorsDbEntities()) { foreach (Account account in alenMotorsDbEntities.Accounts.ToList()) { if (account.Email.Replace(" ", string.Empty) == email) { Role roleToAdd = Enumerable.FirstOrDefault(alenMotorsDbEntities.Roles, role => role.RoleName.Replace(" ", string.Empty) == roleName); UserRoleManagerResult userInRoles = GetUserRoles(email); if (userInRoles.Roles.Any(userInRole => userInRole == roleName)) { userManagerResult.ErrorMessage = "User already in role"; return userManagerResult; } account.AccountsInRoles.Add(new AccountInRole {AccountID = account.AccountID, RoleID = roleToAdd.RoleID}); alenMotorsDbEntities.SaveChanges(); userManagerResult.Success = true; return userManagerResult; } } } return null; } catch (Exception ex) { userManagerResult.ErrorMessage = ex.Message; return userManagerResult; } }
public override string[] GetRolesForUser(string email) { UserRoleManagerResult getUserRolesResult = UserRoleManager.GetUserRoles(email); if (getUserRolesResult == null) { // remove in production version, only for protyping, or until roles are implanted getUserRolesResult = new UserRoleManagerResult {Roles = new List <string>(new[] {"Developer"})}; // Prodcution version of the code //userRoleManagerResult = new UserRoleManagerResult { Roles = new[] { "" } }; } return getUserRolesResult?.Roles.ToArray(); }
public static UserRoleManagerResult RemoveRole(string roleName) { UserRoleManagerResult userManagerResult = new UserRoleManagerResult(); try { using (AlenMotorsDbEntities alenMotorsDbEntities = new AlenMotorsDbEntities()) { int roleIdToRemove; foreach (Role role in alenMotorsDbEntities.Roles.ToList().Where(role => role.RoleName.Replace(" ", String.Empty) == roleName)) { roleIdToRemove = role.RoleID; foreach (AccountInRole accountInRole in alenMotorsDbEntities.AccountInRoles.ToList().Where(accountInRolein => accountInRolein.RoleID == roleIdToRemove)) { alenMotorsDbEntities.AccountInRoles.Remove(accountInRole); } alenMotorsDbEntities.SaveChanges(); userManagerResult.Success = true; return userManagerResult; } } } catch (Exception ex) { userManagerResult.ErrorMessage = ex.Message; return userManagerResult; } return userManagerResult; }
/// <summary> /// Add a new role to the avalaible roles /// </summary> /// <param name="roleNameNew">Name of the new role</param> /// <returns>Return true on successful operation, else a string with the error message</returns> public static UserRoleManagerResult AddRole(string roleNameNew) { UserRoleManagerResult userManagerResult = new UserRoleManagerResult(); try { using (AlenMotorsDbEntities alenMotorsDbEntities = new AlenMotorsDbEntities()) { UserRoleManagerResult checkRoles = GetRoles(); // Check if the role already exists, case senstive. Example User = user will return as the role already exists if ( checkRoles.Roles.Select(roleName => roleName.Equals(roleNameNew, StringComparison.CurrentCultureIgnoreCase)). Any(stringEqual => stringEqual)) { userManagerResult.ErrorMessage = "This Role already exists"; return userManagerResult; } alenMotorsDbEntities.Roles.Add(new Role {RoleName = roleNameNew}); alenMotorsDbEntities.SaveChanges(); } userManagerResult.Success = true; return userManagerResult; } catch (Exception ex) { userManagerResult.ErrorMessage = ex.Message; return userManagerResult; } }
/// <summary> /// Get all roles names List<string> /// </summary> /// <returns>Returns a List<string> of all roles names, else a string with an error message </string></returns> public static UserRoleManagerResult GetRoles() { UserRoleManagerResult userManagerResult = new UserRoleManagerResult(); List <string> roles = new List <string>(); try { using (AlenMotorsDbEntities alenMotorsDbEntities = new AlenMotorsDbEntities()) { roles.AddRange(alenMotorsDbEntities.Roles.ToList().Select(role => role.RoleName.Replace(" ", string.Empty))); } userManagerResult.Success = true; userManagerResult.Roles = roles; return userManagerResult; } catch (Exception ex) { userManagerResult.ErrorMessage = ex.Message; return userManagerResult; } }
/// <summary> /// Gets all the Roles which the user belongs to, retunrs string[] /// </summary> /// <param name="email">The users mail</param> /// <returns>Returns all the names of roles which the user belongs to (string[]), else a string with an error message</returns> public static UserRoleManagerResult GetUserRoles(string email) { UserRoleManagerResult userManagerResult = new UserRoleManagerResult(); List <Role> roles = new List <Role>(); List <string> userRoles = new List <string>(); try { using (AlenMotorsDbEntities alenMotorsDbEntities = new AlenMotorsDbEntities()) { roles.AddRange(alenMotorsDbEntities.Roles); foreach (Account account in alenMotorsDbEntities.Accounts.ToList()) { if (account.Email.Replace(" ", string.Empty) == email) { foreach (AccountInRole accountInRole in account.AccountsInRoles.ToList()) { userRoles.AddRange(from role in roles where role.RoleID == accountInRole.RoleID select role.RoleName.Replace(" ", string.Empty)); } userManagerResult.Roles = userRoles; userManagerResult.Success = true; return userManagerResult; } } return null; } } catch (Exception ex) { userManagerResult.ErrorMessage = ex.Message; return userManagerResult; } }
/// <summary> /// Removes a role from the user /// </summary> /// <param name="email">The user's email</param> /// <param name="roleName">The role to remove from the user</param> /// <returns>Return true on successful operation, else a string with an error message</returns> public static UserRoleManagerResult RemoveRoleFromUser(string email, string roleName) { UserRoleManagerResult userManagerResult = new UserRoleManagerResult(); try { using (AlenMotorsDbEntities alenMotorsDbEntities = new AlenMotorsDbEntities()) { foreach (Account account in alenMotorsDbEntities.Accounts.ToList()) { if (account.Email.Replace(" ", string.Empty) == email) { foreach (Role role in alenMotorsDbEntities.Roles.ToList()) { if (role.RoleName.Replace(" ", String.Empty) == roleName) { int roleIDtoRemove = role.RoleID; if (roleIDtoRemove == 4) { userManagerResult.ErrorMessage = "You can't remove the Role User"; return userManagerResult; } AccountInRole accountInRoleToRemove = new AccountInRole { AccountID = account.AccountID, RoleID = roleIDtoRemove }; alenMotorsDbEntities.AccountInRoles.Attach(accountInRoleToRemove); alenMotorsDbEntities.AccountInRoles.Remove(accountInRoleToRemove); alenMotorsDbEntities.SaveChanges(); userManagerResult.Success = true; return userManagerResult; } } } } } userManagerResult.ErrorMessage = "Mis match"; return userManagerResult; } catch (Exception ex) { userManagerResult.ErrorMessage = ex.Message; return userManagerResult; } }