Ejemplo n.º 1
0
        public static async Task <string> GenerateToken(YouQuizUser user)
        {
            var now    = DateTime.UtcNow;
            var claims = new[]
            {
                new Claim(ClaimTypes.Sid, $"{user.Id}"),
                new Claim(ClaimTypes.Email, user.Email),
                new Claim("FirstName", user.FirstName),
                new Claim("LastName", user.LastName),
                new Claim(ClaimTypes.Gender, Enum.GetName(typeof(Gender), user.Gender)),
                new Claim(ClaimTypes.Role, user.UserType.ToString()),
                new Claim(ClaimTypes.Name, user.UserName ?? " "),
                new Claim(ClaimTypes.PrimarySid, $"{user.Id}"),
                new Claim(ClaimTypes.MobilePhone, user.PhoneNumber ?? " "),
                new Claim(JwtRegisteredClaimNames.Jti, await Task.FromResult(Guid.NewGuid().ToString())),
                new Claim(JwtRegisteredClaimNames.Iat,
                          new DateTimeOffset(now).ToUniversalTime().ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64),
                // new Claim(IdentityClaim, Guid.NewGuid().AsKey()+SequenceGenerator.NextSequence),
                //new Claim(LicenseClaim, Encrypt(key)),
                //new Claim("Secondary", Encrypt(secondary)),
                //new Claim("Last", $"{user.CurrentLogin:F}"),
                //new Claim(nameof(user.Scope), $"{user.Scope}")
            };

            return(GetToken(claims));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> SignUp([FromBody] SignUpUser user)
        {
            try
            {
                var u = new YouQuizUser()
                {
                    Email     = user.Email,
                    UserType  = Enum.GetName(typeof(UserType), user.UserType),//Enum.Parse<UserType>(user.UserType.ToString()).ToString(),
                    Gender    = user.Gender,
                    FirstName = user.FirstName,
                    LastName  = user.LastName,
                    UserName  = $"{user.FirstName.ToLower()[0]}{user.LastName}"
                };
                var dbUser = await _userManager.CreateAsync(u);

                if (dbUser.Succeeded)
                {
                    var r = await _userManager.AddPasswordAsync(u, user.Password);

                    if (r.Succeeded)
                    {
                        return(Ok(new { status = true, message = "User creation succeeded!" }));
                    }
                    else
                    {
                        var userToDelete = new YouQuizUser()
                        {
                            Email = u.Email
                        };
                        await _userManager.DeleteAsync(userToDelete);

                        throw new Exception("User password hashing failed!");
                    }
                }
                else
                {
                    throw new Exception("User creation failed! " + dbUser.Errors.FirstOrDefault().Description);
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e.ToString() ?? e.Message);
                return(BadRequest(new { status = false, message = e.Message ?? e.ToString() }));
            }
        }