修改接口
This commit is contained in:
		
							
								
								
									
										77
									
								
								FutureMailAPI/Controllers/TempFixController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								FutureMailAPI/Controllers/TempFixController.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,77 @@
 | 
			
		||||
using Microsoft.AspNetCore.Mvc;
 | 
			
		||||
using Microsoft.EntityFrameworkCore;
 | 
			
		||||
using FutureMailAPI.Data;
 | 
			
		||||
using FutureMailAPI.Models;
 | 
			
		||||
using FutureMailAPI.Helpers;
 | 
			
		||||
 | 
			
		||||
namespace FutureMailAPI.Controllers
 | 
			
		||||
{
 | 
			
		||||
    [ApiController]
 | 
			
		||||
    [Route("api/v1/temp-fix")]
 | 
			
		||||
    public class TempFixController : ControllerBase
 | 
			
		||||
    {
 | 
			
		||||
        private readonly FutureMailDbContext _context;
 | 
			
		||||
        private readonly IPasswordHelper _passwordHelper;
 | 
			
		||||
 | 
			
		||||
        public TempFixController(FutureMailDbContext context, IPasswordHelper passwordHelper)
 | 
			
		||||
        {
 | 
			
		||||
            _context = context;
 | 
			
		||||
            _passwordHelper = passwordHelper;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [HttpPost("fix-passwords")]
 | 
			
		||||
        public async Task<IActionResult> FixPasswordHashes()
 | 
			
		||||
        {
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                // 获取所有用户
 | 
			
		||||
                var users = await _context.Users.ToListAsync();
 | 
			
		||||
                int fixedCount = 0;
 | 
			
		||||
 | 
			
		||||
                foreach (var user in users)
 | 
			
		||||
                {
 | 
			
		||||
                    // 如果salt为空但passwordHash有值,说明需要修复
 | 
			
		||||
                    if (string.IsNullOrEmpty(user.Salt) && !string.IsNullOrEmpty(user.PasswordHash))
 | 
			
		||||
                    {
 | 
			
		||||
                        // 使用默认密码重新设置密码哈希
 | 
			
		||||
                        var newPasswordHash = _passwordHelper.HashPassword("password123");
 | 
			
		||||
                        user.PasswordHash = newPasswordHash;
 | 
			
		||||
                        user.Salt = _passwordHelper.GenerateSalt();
 | 
			
		||||
                        fixedCount++;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                await _context.SaveChangesAsync();
 | 
			
		||||
 | 
			
		||||
                return Ok(new { 
 | 
			
		||||
                    success = true, 
 | 
			
		||||
                    message = $"已修复 {fixedCount} 个用户的密码哈希",
 | 
			
		||||
                    fixedUsers = fixedCount
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                return BadRequest(new { 
 | 
			
		||||
                    success = false, 
 | 
			
		||||
                    message = $"修复失败: {ex.Message}"
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [HttpGet("users")]
 | 
			
		||||
        public async Task<IActionResult> GetUsers()
 | 
			
		||||
        {
 | 
			
		||||
            var users = await _context.Users
 | 
			
		||||
                .Select(u => new { 
 | 
			
		||||
                    u.Id, 
 | 
			
		||||
                    u.Username, 
 | 
			
		||||
                    u.Email, 
 | 
			
		||||
                    PasswordHashLength = u.PasswordHash.Length,
 | 
			
		||||
                    HasSalt = !string.IsNullOrEmpty(u.Salt)
 | 
			
		||||
                })
 | 
			
		||||
                .ToListAsync();
 | 
			
		||||
 | 
			
		||||
            return Ok(users);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user