using Microsoft.AspNetCore.Mvc; using SiteManagementSystem_SoftwareEngineering_.Entity; using SiteManagementSystem_SoftwareEngineering_.Extension; using SiteManagementSystem_SoftwareEngineering_.Factory; using SiteManagementSystem_SoftwareEngineering_.Interface; using SiteManagementSystem_SoftwareEngineering_.Model; namespace SiteManagementSystem_SoftwareEngineering_.Controllers { public class UserController : ControllerBase { private readonly IUserManageService _userManageService; private readonly ITokenFactory _tokenFactory; public UserController(IUserManageService userManageService,ITokenFactory tokenFactory) { _userManageService = userManageService; _tokenFactory = tokenFactory; } [HttpGet("AddInitAdministratorUser")] public IActionResult AddInitAdministratorUser() { _userManageService.AddUser( new User { Name = "admin", RoleName = "Administrator", Secret = "admin" } ); return this.Success(); } [HttpPost("AddUser")] public IActionResult AddUser(UserModel user) { _userManageService.AddUser(new User(user)); return this.Success(); } [HttpPost("Login")] public IActionResult Login(UserModel model) { var user = new User(model); var (result, info) = _userManageService.IsUserExist(ref user); if (!result) return this.Forbidden(info); return this.Success("", new { AccessToken = _tokenFactory.CreateAccessToken(user), RefreshToken = _tokenFactory.CreateRefreshToken(user) }); } } }