/
renix
/
TravelGuide
Обзор
Документация
Войти
/
renix
/
TravelGuide
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
back/Controllers/ResetPasswordController.cs
65 строк
2 KB
artem777764
Более логичные аргументы в ResetPassword
09 апр 2025, 23:43
09 апр 2025, 23:43
af4b692
Код
Авторство
О чём код?
using System.Threading.Tasks; using back.DTOs; using back.DTOs.EmailDTOs; using back.DTOs.UserDTO; using back.Extensions; using back.Interfaces; using back.Models; using back.Models.Entities; using back.Services; using back.Services.EntityServices; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace back.Controllers; [ApiController] [Route("auth")] public class ResetPasswordController : ControllerBase { private readonly IUserService _userService; private readonly RedisService _redisService; private readonly EmailService _emailSerivce; public ResetPasswordController(IUserService userService, RedisService redisService, EmailService emailService) { _userService = userService; _redisService = redisService; _emailSerivce = emailService; } [HttpPost("create-reset-code/{login}")] public async Task<IActionResult> CreateResetCode([FromRoute] string login) { UserEntity? user = await _userService.FindUserByLogin(login); if (user == null) return NotFound(); string code = await _redisService.CreateResetKey(user.Id); await _emailSerivce.SendPasswordResetEmailAsync(login, code); return Ok(); } [HttpPost("verify-reset-code/{login}/{code}")] public async Task<IActionResult> VerifyResetCode([FromRoute] string login, [FromRoute] string code) { UserEntity? user = await _userService.FindUserByLogin(login); if (user == null) return NotFound(); bool isSuccesseful = await _redisService.VerifyResetKey(user.Id, code); if(isSuccesseful) return Ok(); return NotFound(); } [HttpPost("update-password/{login}/{password}")] public async Task<IActionResult> UpdatePassword([FromRoute] string login, [FromRoute] string password) { UserEntity? user = await _userService.FindUserByLogin(login); if (user == null) return NotFound(); user.HashPassword = BCrypt.Net.BCrypt.EnhancedHashPassword(password); await _userService.UpdateAsync(user); return Ok(); } }