public override void AddUsersToRoles(string[] usernames, string[] roleNames) { if (usernames.Any(un => String.IsNullOrWhiteSpace(un))) throw new ArgumentException("Usernames cannot contain username that is null, empty string or whitespace"); if (roleNames.Any(rn => String.IsNullOrWhiteSpace(rn))) throw new ArgumentException("RoleName cannot contain role name that is null, empty string or whitespace"); using (var db = new MysenseiEntities()) { var users = db.Users.Where(u => usernames.Contains(u.Email)).ToList(); var roles = db.Roles.Where(r => roleNames.Contains(r.RoleNname)).ToList(); foreach (var user in users) { foreach (var role in roles) { if (!user.Roles.Contains(role)) { user.Roles.Add(role); } } } db.SaveChanges(); } }
public override void CreateRole(string roleName) { ThrowOnNullOrWhiteSpace(roleName, "roleName"); if (roleName.Contains(',')) throw new ArgumentException("roleName should not contain comma (\",\")"); if (roleName.Length > 50) throw new ArgumentException("roleName cannot be longer than 50 characters"); using (var db = new MysenseiEntities()) { var role = new Role() { RoleNname = roleName }; db.Roles.Add(role); db.SaveChanges(); } }
public override bool DeleteRole(string roleName, bool throwOnPopulatedRole) { ThrowOnNullOrWhiteSpace(roleName, "roleName"); using (var db = new MysenseiEntities()) { var role = db.Roles.FirstOrDefault(r => r.RoleNname == roleName); if (role == null) throw new Exception("Role with given roleName does not exist"); if (throwOnPopulatedRole && role.Users.Any()) throw new ProviderException("Role is populated with users"); db.Roles.Remove(role); db.SaveChanges(); return true; } }
public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames) { if (usernames.Any(un => String.IsNullOrWhiteSpace(un))) throw new ArgumentException("Usernames cannot contain username that is null, empty string or whitespace"); if (roleNames.Any(rn => String.IsNullOrWhiteSpace(rn))) throw new ArgumentException("RoleName cannot contain role name that is null, empty string or whitespace"); using (var db = new MysenseiEntities()) { var users = db.Users.Include(i => i.Roles).Where(a => usernames.Contains(a.Email)); foreach (var user in users) { foreach (var roleName in roleNames) { var role = user.Roles.FirstOrDefault(r => r.RoleNname == roleName); if (role != null) { user.Roles.Remove(role); } } } db.SaveChanges(); } }