コード例 #1
0
        public async Task <IHttpActionResult> ChangePassword([FromBody] AccountModel account)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            string userId = ClaimsPrincipal.Current?.FindFirst(ClaimTypes.NameIdentifier).Value ?? string.Empty;

            if (!string.IsNullOrEmpty(userId))
            {
                bool isMatchPassword = await this._identityService.IsMatchPassword(userId, account.OldPassword);

                if (isMatchPassword)
                {
                    SystemIdentityResult result = await this._identityService.ChangePassword(userId, account.NewPassword);

                    if (result.IsError)
                    {
                        this.AddErrors(result.Errors);
                    }
                    else
                    {
                        return(Ok(account.NewPassword));
                    }
                }
            }
            return(BadRequest());
        }
コード例 #2
0
        public async Task <IHttpActionResult> Register([FromBody] RegisterModel account)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // Create User account in AspNetUsers
            SystemIdentityResult result = await this._identityService.Register(account.Username, account.Password);


            if (result.IsError)
            {
                this.AddErrors(result.Errors);

                return(BadRequest(ModelState));
            }
            else
            {
                // Create user info in User
                User user = AutoMapper.Mapper.Map <RegisterModel, User>(account);
                _userService.CreateUser(user);
                _userService.SaveUserChanges();
                return(Ok(user));
            }
        }
コード例 #3
0
        public async Task <SystemIdentityResult> Register(string username, string password)
        {
            SystemIdentityResult result = new SystemIdentityResult();

            using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                Account account = new Account {
                    UserName = username, PhoneNumber = username
                };

                IdentityResult user = await this._accountService.CreateAsync(account, password);

                if (!user.Succeeded)
                {
                    result.Errors.AddRange(user.Errors);
                }
                else
                {
                    var role = _accountService.AddToRole(account.Id, UserType.Member.ToString());

                    if (!role.Succeeded)
                    {
                        result.Errors.AddRange(role.Errors);
                    }
                }

                scope.Complete();
            }

            return(result);
        }
コード例 #4
0
        public async Task <SystemIdentityResult> GrantResourceOwnerCredentials(string userName, string password, string authenticateType)
        {
            SystemIdentityResult result = new SystemIdentityResult();
            Account user = await this._accountService.FindAsync(userName, password);

            if (user == null)
            {
                result.Errors.Add("Invalid Username or Password.");
            }
            else
            {
                if (user.LockoutEnabled)
                {
                    result.Errors.Add("Unable to login, please contact your administrator for more information");
                }
                else
                {
                    ClaimsIdentity claimsIdentity = await this._accountService.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

                    claimsIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, user.Id));
                    claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, user.UserType.ToString()));

                    result.Data = claimsIdentity;
                }
            }
            return(result);
        }
コード例 #5
0
        public async Task <SystemIdentityResult> ChangePassword(string userId, string newPassword)
        {
            SystemIdentityResult result = new SystemIdentityResult();

            IdentityResult user = await this._accountService.ResetPasswordAsync
                                      (userId, await this._accountService.GeneratePasswordResetTokenAsync(userId), newPassword);

            if (!user.Succeeded)
            {
                result.Errors.AddRange(user.Errors);
            }
            return(result);
        }
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            context.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

            SystemIdentityResult result = await _identityService.GrantResourceOwnerCredentials(context.UserName, context.Password, context.Options.AuthenticationType);

            if (result.IsError)
            {
                context.SetError("invalid_grant", result.Errors.FirstOrDefault());
                return;
            }

            ClaimsIdentity claimIdentity = result.Data as ClaimsIdentity;

            context.Validated(claimIdentity);
        }