public IActionResult ChangePassword(string newPassword, string oldPassword)
        {
            using (var context = new RevojiDataContext())
            {
                DBAppUser dbAppUser = context.Get <DBAppUser>(ApiUser.ID);
                if (dbAppUser == null)
                {
                    return(new NotFoundResult());
                }

                if (!dbAppUser.isPasswordCorrect(oldPassword))
                {
                    return(new UnprocessableEntityResult());
                }

                dbAppUser.SetPassword(newPassword);
                context.Save();

                return(Ok());
            }
        }
Beispiel #2
0
        Task IResourceOwnerPasswordValidator.ValidateAsync(ResourceOwnerPasswordValidationContext context)
        {
            using (var dbctx = new RevojiDataContext())
            {
                if (context.UserName == null || context.Password == null)
                {
                    context.Result = new GrantValidationResult(TokenRequestErrors.InvalidRequest, "missing_arguments_error");
                    return(Task.FromResult <object>(null));
                }

                DBAppUser dbAppUser = dbctx.AppUsers.FirstOrDefault(au => au.Handle == context.UserName);
                if (dbAppUser == null || !dbAppUser.isPasswordCorrect(context.Password))
                {
                    context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, "invalid_handle_password_error");
                    return(Task.FromResult <object>(null));
                }

                var claim  = new Claim(ClaimTypes.Name, dbAppUser.Handle);
                var claims = new List <Claim>();
                claims.Add(claim);
                context.Result = new GrantValidationResult(dbAppUser.Handle, "access_token", claims);
                return(Task.FromResult <object>(null));
            }
        }