/// <summary> /// Updates a given role. /// </summary> /// <param name="role">The role to be updated</param> /// <returns>The updated role</returns> public Models.ApplicationRole UpdateRole(Models.ApplicationRole role) { // gets the old role and apply new values var oldRole = GetRole(role.Id); if (oldRole == null) { throw new Box.Common.BoxLogicException($"Can not find role {role.Id} to update."); } role.NormalizedName = _roleManager.NormalizeKey(role.Name); _context.Entry(oldRole).State = EntityState.Modified; _context.Entry(oldRole).CurrentValues.SetValues(role); // remove all claims from the role var roleClaims = oldRole.RoleClaims.ToArray(); _context.RoleClaims.RemoveRange(roleClaims); // now add new claims var newClaims = role.RoleClaims.ToArray(); _context.RoleClaims.AddRange(newClaims); // ave everything at once _context.SaveChanges(); _log.Log($"Role {role.Name} was updated."); return(role); }
public async Task <ActionResult <ApplicationRole> > PostRol(ApplicationRole _roleS) { ApplicationRole _role = _roleS; try { // TODO: Add insert logic here string baseadress = config.Value.urlbase; HttpClient _client = new HttpClient(); _client.DefaultRequestHeaders.Add("Authorization", "Bearer " + HttpContext.Session.GetString("token")); var result = await _client.GetAsync(baseadress + "api/Roles/GetRoleByName/" + _role.Name); string valorrespuesta = ""; if (result.IsSuccessStatusCode) { valorrespuesta = await(result.Content.ReadAsStringAsync()); _role = JsonConvert.DeserializeObject <ApplicationRole>(valorrespuesta); } if (_role == null) { _role = new Models.ApplicationRole(); _role = _roleS; } _role.UsuarioCreacion = HttpContext.Session.GetString("user"); _role.UsuarioModificacion = HttpContext.Session.GetString("user"); _role.FechaCreacion = DateTime.Now; _role.FechaModificacion = DateTime.Now; if (_role.Id != _roleS.Id) { return(await Task.Run(() => BadRequest($"Ya éxiste un rol registrado con este nombre."))); } else { result = await _client.PostAsJsonAsync(baseadress + "api/Roles/CreateRole", _role); valorrespuesta = ""; if (result.IsSuccessStatusCode) { valorrespuesta = await(result.Content.ReadAsStringAsync()); _role = JsonConvert.DeserializeObject <ApplicationRole>(valorrespuesta); } } } catch (Exception ex) { _logger.LogError($"Ocurrio un error: { ex.ToString() }"); return(BadRequest($"Ocurrio un error{ex.Message}")); } return(new ObjectResult(new DataSourceResult { Data = new[] { _role }, Total = 1 })); }
/// <summary> /// Creates a new role /// </summary> /// <param name="role">The new role</param> /// <returns>The created role</returns> public async Task <Models.ApplicationRole> CreateRole(Models.ApplicationRole role) { var result = await _roleManager.CreateAsync(role); if (!result.Succeeded) { throw new BoxLogicException($"Error creating role {role.Name}", result.Errors.First().Description); } _log.Log($"Role {role.Name} was created."); return(role); }
public async Task SeedAsync(ApplicationDbContext context, IServiceProvider servers) { if (!context.Roles.Any()) { var _roleManager = servers.GetRequiredService <RoleManager <Models.ApplicationRole> >(); var defaultRole = new Models.ApplicationRole { Name = "Administrators", NormalizedName = "Administrators", }; var result = await _roleManager.CreateAsync(defaultRole); if (!result.Succeeded) { throw new Exception("角色创建失败" + result.Errors.SelectMany(e => e.Description)); } } if (!context.Users.Any()) { _userManager = servers.GetRequiredService <UserManager <Models.ApplicationUser> >(); var defaultUser = new Models.ApplicationUser { UserName = "******", Email = "*****@*****.**", NormalizedUserName = "******", //SecurityStamp="admin", Avatar = "https://b-ssl.duitang.com/uploads/item/201707/11/20170711135214_53FnY.thumb.224_0.jpeg" }; var result = await _userManager.CreateAsync(defaultUser, "123456"); await _userManager.AddToRoleAsync(defaultUser, "Administrators"); if (!result.Succeeded) { throw new Exception("初始化默认用户失败!"); } } }