public async Task <AuthenticationOutcome> LoginUser(string username, string password)
        {
            var outcome = new AuthenticationOutcome();

            try
            {
                var result = await _signInManager.PasswordSignInAsync(username, password, false, false);

                if (result.Succeeded)
                {
                    var user  = _userManager.Users.SingleOrDefault(r => r.UserName == username);
                    var token = await GenerateJwtToken(username, user);

                    return(new AuthenticationOutcome
                    {
                        Token = token
                    });
                }

                outcome.Errors.Add("Failed to authenticate user.");
                return(outcome);
            } catch (Exception _)
            {
                outcome.Errors.Add("Failed to authenticate user.");
                return(outcome);
            }
        }
        public async Task <AuthenticationOutcome> RegisterUser(string username, string password, IEnumerable <string> roles)
        {
            var outcome = new AuthenticationOutcome();

            try
            {
                if (await _userManager.FindByNameAsync(username) != null)
                {
                    outcome.Errors.Add("User with the specified username already exists.");
                    return(outcome);
                }

                var user = new IdentityUser
                {
                    UserName = username
                };

                var result = await _userManager.CreateAsync(user, password);

                if (result.Succeeded)
                {
                    foreach (var role in roles)
                    {
                        if (await _roleManager.RoleExistsAsync(role))
                        {
                            _userManager.AddToRoleAsync(user, role).Wait();
                        }
                    }
                    var token = await GenerateJwtToken(username, user);

                    outcome.Token = token;
                    return(outcome);
                }
                outcome.Errors.AddRange(result.Errors.Select(x => x.Description).ToList());
                return(outcome);
            }
            catch (Exception _)
            {
                outcome.Errors.Add("Failed to authenticate user.");
                return(outcome);
            }
        }
示例#3
0
 public AuthenticationResult(AuthenticationOutcome outcome, User user, IList<string> missingFields)
 {
     Outcome = outcome;
     User = user;
     MissingFields = missingFields;
 }