Example #1
0
        protected object GenerateJwtToken(BookshelfIdentityUser identityUser)
        {
            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Jti, identityUser.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.Sub, identityUser.IdInApplication.ToString())
            };

            var roles = userManager.GetRolesAsync(identityUser).Result;

            claims.AddRange(roles.Select(role => new Claim(ClaimsIdentity.DefaultRoleClaimType, role)));

            var key         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(globalConfig.JwtKey));
            var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expires     = DateTime.Now.AddDays(Convert.ToDouble(globalConfig.JwtExpireDays));

            var token = new JwtSecurityToken(
                globalConfig.JwtIssuer,
                globalConfig.JwtAudience,
                claims,
                expires: expires,
                signingCredentials: credentials
                );

            return(new { Token = new JwtSecurityTokenHandler().WriteToken(token) });
        }
Example #2
0
        public async Task <Guid> RegisterAsync(string email, string password, string firstName, string lastName)
        {
            var rolesInDb = roleManager.Roles.ToList();

            if (rolesInDb.Count == 0)
            {
                await roleManager.CreateAsync(new IdentityRole <Guid> {
                    Name = System.Enum.GetName(typeof(RoleType), RoleType.Account)
                });

                await roleManager.CreateAsync(new IdentityRole <Guid> {
                    Name = System.Enum.GetName(typeof(RoleType), RoleType.Root)
                });
            }
            var aspnetUser = new BookshelfIdentityUser
            {
                UserName = email,
                Email    = email
            };
            var creationResult = await userManager.CreateAsync(aspnetUser, password);

            if (creationResult != IdentityResult.Success)
            {
                throw new ApplicationException($"Register failed. {string.Join("\r\n", creationResult.Errors)}");
            }
            var identityUser = await userManager.FindByNameAsync(email);

            var roleAssignmentResult = await userManager.AddToRoleAsync(identityUser, System.Enum.GetName(typeof(RoleType), RoleType.Account));

            if (roleAssignmentResult != IdentityResult.Success)
            {
                throw new ApplicationException($"Role assignment failed. {string.Join("\r\n", roleAssignmentResult.Errors)}");
            }
            return(aspnetUser.Id);
        }