You are on page 1of 2

namespace Default.WebHost.Server.

Controllers
{
[Area("Category")]
[Route("api/user")]
public class UserAuthController : Controller
{
private readonly UserManager<User> _userManager;
private readonly RoleManager<IdentityRole<long>> _roleManager;
private readonly SignInManager<User> _signInManager;
private readonly HttpContext _httpContext;
private IRepository<User> _userRepository;

public UserAuthController(UserManager<User> userManager,


IHttpContextAccessor contextAccessor, IRepository<User> userRepository,
RoleManager<IdentityRole<long>> roleManager, SignInManager<User> signInManager)
{
_userManager = userManager;
_httpContext = contextAccessor.HttpContext;
_userRepository = userRepository;
_roleManager = roleManager;
_signInManager = signInManager;
}

[HttpGet("createUser/{username}/{phone}/{email}/{password}")]
public async Task<IActionResult> Get(string username, string phone, string
email, string password)
{
User user = new User
{
UserName = username,
PhoneNumber = phone,
Email = email,
};
await _userManager.CreateAsync(user, password);
return Ok();
}

[HttpGet("createRole/{roleName}")]
public async Task<IActionResult> GetRole(string roleName)
{
await _roleManager.CreateAsync(new IdentityRole<long>(roleName));
return Ok();
}

[HttpGet("userRole/{userId}/{roleName}")]
public async Task<IActionResult> GetUserRole(long userId, string roleName)
{
var user = _userRepository.Query().FirstOrDefault(x => x.Id == userId);
await _userManager.AddToRoleAsync(user, roleName);
return Ok();
}

[HttpGet("login/{username}/{password}")]
public async Task<IActionResult> Login(string username, string password)
{
var result = await _signInManager.PasswordSignInAsync(username,
password, true, false);
return Json(Ok());
}
[HttpGet("logout")]
public async Task<IActionResult> LogOut()
{
await _signInManager.SignOutAsync();
return Json(Ok());
}

[HttpGet("currentUser")]
public async Task<IActionResult> CurrentUser()
{
var contextUser = _httpContext.User;

var claims = contextUser.Claims.Select(x => x.Value);


return Json(claims);
}

}
}

You might also like