public async Task <ActionResult> Delete(
            [FromBody] UsernameOrEmailModel model,
            [FromHeader(Name = Headers.AdminKey)] string adminKey)
        {
            if (!CheckAdmin(adminKey))
            {
                return(Unauthorized());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var userResp = await UserManager.FindUserByUsernameOrEmail(model.UsernameOrEmail);

            if (!userResp.Found)
            {
                return(NotFound());
            }

            var resp = await UserManager.DeleteAsync(userResp.Value);

            if (resp.Succeeded)
            {
                return(Ok());
            }

            foreach (var error in resp.Errors)
            {
                ModelState.TryAddModelError(error.Code, error.Description);
            }

            return(BadRequest(ModelState));
        }
        public Task <ActionResult> UnlockUser(
            [FromBody] UsernameOrEmailModel model,
            [FromHeader(Name = Headers.AdminKey)] string adminKey)
        {
            if (!CheckAdmin(adminKey))
            {
                return(Task.FromResult <ActionResult>(Unauthorized()));
            }

            return(LockUnlockUser(model, false));
        }
Esempio n. 3
0
        public async Task <ActionResult <ForgotPasswordResponse> > ForgotPassword([FromBody] UsernameOrEmailModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // https://code-maze.com/password-reset-aspnet-core-identity/
            var candidateUser = await UserManager.FindUserByUsernameOrEmail(model.UsernameOrEmail);

            if (!candidateUser.Found)
            {
                return(NotFound());
            }

            return(Ok(new ForgotPasswordResponse
            {
                Email = candidateUser.Value.Email,
                Token = await UserManager.GeneratePasswordResetTokenAsync(candidateUser.Value)
            }));
        }
        async Task <ActionResult> LockUnlockUser(UsernameOrEmailModel model, bool isLocked)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var userResp = await UserManager.FindUserByUsernameOrEmail(model.UsernameOrEmail);

            if (!userResp.Found)
            {
                return(NotFound());
            }

            var resp = await UserManager.SetLockoutEnabledAsync(userResp.Value, isLocked);

            if (resp.Succeeded)
            {
                if (isLocked)
                {
                    await UserManager.SetLockoutEndDateAsync(userResp.Value, DateTimeOffset.Now.AddYears(100));
                }
                else
                {
                    await UserManager.SetLockoutEndDateAsync(userResp.Value, null);
                }
            }

            if (resp.Succeeded)
            {
                return(Ok());
            }

            foreach (var error in resp.Errors)
            {
                ModelState.TryAddModelError(error.Code, error.Description);
            }

            return(BadRequest(ModelState));
        }