Example #1
0
 public async Task<IdentityResult> RegisterUserAsync(AppUser appUser, string password)
 {
     appUser.Id = Guid.NewGuid().ToString();
     appUser.Enabled = true;
     var result = await _userManager.CreateAsync(appUser, password);
     _userManager.AddToRole(appUser.Id, "User");
     return result;
 }
Example #2
0
 public IdentityResult RegisterUser(AppUser appUser, string password)
 {
     appUser.Id = Guid.NewGuid().ToString();
     appUser.Enabled = true;
     var result = _userManager.Create(appUser, password);
     if(result.Succeeded)
         _userManager.AddToRole(appUser.Id, "User");
     return result;
 }
Example #3
0
 public bool UpdateUser(AppUser user)
 {
     var result = _userManager.Update(user);
     return result.Succeeded;
 }
Example #4
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="user"></param>
 /// <param name="oldPassword"></param>
 /// <param name="newPassword"></param>
 /// <returns></returns>
 public bool UpdateUserPassword(AppUser user, string oldPassword, string newPassword)
 {
     if (user.PasswordHash != _userManager.PasswordHasher.HashPassword(oldPassword))
     {
         user.PasswordHash = _userManager.PasswordHasher.HashPassword(newPassword);
         var result = _userManager.Update(user);
         return result.Succeeded;
     }
     else
     {
         return false;
     }
 }
        /// <summary>
        /// Called when a request to the Token endpoint arrives with a "grant_type" of "password". This occurs when the user has provided name and password
        ///             credentials directly into the client application's user interface, and the client application is using those to acquire an "access_token" and 
        ///             optional "refresh_token". If the web application supports the
        ///             resource owner credentials grant type it must validate the context.Username and context.Password as appropriate. To issue an
        ///             access token the context.Validated must be called with a new ticket containing the claims about the resource owner which should be associated
        ///             with the access token. The application should take appropriate measures to ensure that the endpoint isn’t abused by malicious callers.
        ///             The default behavior is to reject this grant type.
        ///             See also http://tools.ietf.org/html/rfc6749#section-4.3.2
        /// </summary>
        /// <param name="context">The context of the event carries information in and results out.</param>
        /// <returns>
        /// Task to enable asynchronous execution
        /// </returns>
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            var identity = new ClaimsIdentity(context.Options.AuthenticationType);
            AppUser user = new AppUser();

            using (AuthRepository repo = new AuthRepository())
            {
                user = repo.FindUser(context.UserName, context.Password);

                if (user == null)
                {
                    context.SetError("invalid_grant", "The user name or password is incorrect.");
                    return;
                }

                user.UserRoles = repo.GetUserRoles(user.Id);


                if (user.Enabled == false)
                {
                    context.SetError("invalid_grant", "The account is disabled.");
                    return;
                }


            }

            identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));
            identity.AddClaim(new Claim("sub", context.UserName));
            foreach (string role in user.UserRoles)
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, role));
            }




            var props = new AuthenticationProperties(new Dictionary<string, string>
                {
                    { 
                        "as:client_id", context.ClientId ?? string.Empty
                    },
                    { 
                        "displayName", user.Firstname + ' ' + user.Lastname
                    },
                    {
                        "userName", user.UserName
                    },
                    {
                        "userRoles", string.Join(",",identity.Claims.Where(c=> c.Type == ClaimTypes.Role).Select(c => c.Value).ToArray())
                    }
                });

            var ticket = new AuthenticationTicket(identity, props);
            context.Validated(ticket);

        }