コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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
            }));
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        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("初始化默认用户失败!");
                }
            }
        }