mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-07-09 03:04:19 -04:00
Some changes to get register/login flow working smoothly with Admin role.
This commit is contained in:
parent
259b954f26
commit
bb276a5984
@ -37,7 +37,6 @@ namespace API.Controllers
|
||||
[HttpPost("register")]
|
||||
public async Task<ActionResult<UserDto>> Register(RegisterDto registerDto)
|
||||
{
|
||||
_logger.LogInformation("Username: " + registerDto.Password);
|
||||
if (await UserExists(registerDto.Username))
|
||||
{
|
||||
return BadRequest("Username is taken.");
|
||||
@ -48,16 +47,18 @@ namespace API.Controllers
|
||||
var result = await _userManager.CreateAsync(user, registerDto.Password);
|
||||
|
||||
if (!result.Succeeded) return BadRequest(result.Errors);
|
||||
|
||||
|
||||
var roleResult = await _userManager.AddToRoleAsync(user, "Pleb");
|
||||
// TODO: Need a way to store Roles in enum and configure from there
|
||||
var role = registerDto.IsAdmin ? "Admin" : "Pleb";
|
||||
var roleResult = await _userManager.AddToRoleAsync(user, role);
|
||||
|
||||
if (!roleResult.Succeeded) return BadRequest(result.Errors);
|
||||
|
||||
return new UserDto()
|
||||
return new UserDto
|
||||
{
|
||||
Username = user.UserName,
|
||||
Token = await _tokenService.CreateToken(user),
|
||||
IsAdmin = user.IsAdmin
|
||||
};
|
||||
}
|
||||
|
||||
@ -79,11 +80,10 @@ namespace API.Controllers
|
||||
_userRepository.Update(user);
|
||||
await _userRepository.SaveAllAsync();
|
||||
|
||||
return new UserDto()
|
||||
return new UserDto
|
||||
{
|
||||
Username = user.UserName,
|
||||
Token = await _tokenService.CreateToken(user),
|
||||
IsAdmin = user.IsAdmin
|
||||
Token = await _tokenService.CreateToken(user)
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
using System.Threading.Tasks;
|
||||
using API.Entities;
|
||||
using API.Interfaces;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace API.Controllers
|
||||
@ -7,16 +10,26 @@ namespace API.Controllers
|
||||
public class AdminController : BaseApiController
|
||||
{
|
||||
private readonly IUserRepository _userRepository;
|
||||
private readonly UserManager<AppUser> _userManager;
|
||||
|
||||
public AdminController(IUserRepository userRepository)
|
||||
public AdminController(IUserRepository userRepository, UserManager<AppUser> userManager)
|
||||
{
|
||||
_userRepository = userRepository;
|
||||
_userManager = userManager;
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
[HttpGet("exists")]
|
||||
public async Task<ActionResult<bool>> AdminExists()
|
||||
{
|
||||
return await _userRepository.AdminExists();
|
||||
var users = await _userManager.GetUsersInRoleAsync("Admin");
|
||||
return users.Count > 0;
|
||||
}
|
||||
|
||||
[Authorize(Policy = "RequireAdminRole")]
|
||||
[HttpDelete]
|
||||
public async Task<ActionResult> DeleteUser(string username)
|
||||
{
|
||||
return BadRequest("Not Implemented");
|
||||
}
|
||||
|
||||
|
||||
|
@ -14,7 +14,6 @@ namespace API.DTOs
|
||||
public string Username { get; set; }
|
||||
public DateTime Created { get; set; }
|
||||
public DateTime LastActive { get; set; }
|
||||
public bool IsAdmin { get; set; }
|
||||
public IEnumerable<LibraryDto> Libraries { get; set; }
|
||||
}
|
||||
}
|
@ -2,8 +2,7 @@
|
||||
{
|
||||
public class UserDto
|
||||
{
|
||||
public string Username { get; set; }
|
||||
public string Token { get; set; }
|
||||
public bool IsAdmin { get; set; }
|
||||
public string Username { get; init; }
|
||||
public string Token { get; init; }
|
||||
}
|
||||
}
|
@ -62,11 +62,6 @@ namespace API.Data
|
||||
.ProjectTo<MemberDto>(_mapper.ConfigurationProvider)
|
||||
.SingleOrDefaultAsync();
|
||||
}
|
||||
|
||||
public async Task<bool> AdminExists()
|
||||
{
|
||||
return await _context.Users.AnyAsync(x => x.IsAdmin);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -15,6 +15,5 @@ namespace API.Interfaces
|
||||
Task<AppUser> GetUserByUsernameAsync(string username);
|
||||
Task<IEnumerable<MemberDto>> GetMembersAsync();
|
||||
Task<MemberDto> GetMemberAsync(string username);
|
||||
Task<bool> AdminExists();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user