mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-08-07 09:01:25 -04:00
Fixed a bug with previous hotfix which prevented registration for new users. (#899)
This commit is contained in:
parent
a6d8c833e6
commit
7fb41f0945
@ -13,7 +13,6 @@ using API.Interfaces.Services;
|
|||||||
using API.Services;
|
using API.Services;
|
||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using Kavita.Common;
|
using Kavita.Common;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
@ -79,7 +78,6 @@ namespace API.Controllers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="registerDto"></param>
|
/// <param name="registerDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[Authorize(Policy = "RequireAdminRole")]
|
|
||||||
[HttpPost("register")]
|
[HttpPost("register")]
|
||||||
public async Task<ActionResult<UserDto>> Register(RegisterDto registerDto)
|
public async Task<ActionResult<UserDto>> Register(RegisterDto registerDto)
|
||||||
{
|
{
|
||||||
@ -90,6 +88,17 @@ namespace API.Controllers
|
|||||||
return BadRequest("Username is taken.");
|
return BadRequest("Username is taken.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we are registering an admin account, ensure there are no existing admins or user registering is an admin
|
||||||
|
if (registerDto.IsAdmin)
|
||||||
|
{
|
||||||
|
var firstTimeFlow = !(await _userManager.GetUsersInRoleAsync("Admin")).Any();
|
||||||
|
if (!firstTimeFlow && !await _unitOfWork.UserRepository.IsUserAdmin(
|
||||||
|
await _unitOfWork.UserRepository.GetUserByUsernameAsync(User.GetUsername())))
|
||||||
|
{
|
||||||
|
return BadRequest("You are not permitted to create an admin account");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var user = _mapper.Map<AppUser>(registerDto);
|
var user = _mapper.Map<AppUser>(registerDto);
|
||||||
user.UserPreferences ??= new AppUserPreferences();
|
user.UserPreferences ??= new AppUserPreferences();
|
||||||
user.ApiKey = HashUtil.ApiKey();
|
user.ApiKey = HashUtil.ApiKey();
|
||||||
@ -105,6 +114,7 @@ namespace API.Controllers
|
|||||||
|
|
||||||
if (!result.Succeeded) return BadRequest(result.Errors);
|
if (!result.Succeeded) return BadRequest(result.Errors);
|
||||||
|
|
||||||
|
|
||||||
var role = registerDto.IsAdmin ? PolicyConstants.AdminRole : PolicyConstants.PlebRole;
|
var role = registerDto.IsAdmin ? PolicyConstants.AdminRole : PolicyConstants.PlebRole;
|
||||||
var roleResult = await _userManager.AddToRoleAsync(user, role);
|
var roleResult = await _userManager.AddToRoleAsync(user, role);
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<TargetFramework>net5.0</TargetFramework>
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
<Company>kavitareader.com</Company>
|
<Company>kavitareader.com</Company>
|
||||||
<Product>Kavita</Product>
|
<Product>Kavita</Product>
|
||||||
<AssemblyVersion>0.4.9.1</AssemblyVersion>
|
<AssemblyVersion>0.4.9.2</AssemblyVersion>
|
||||||
<NeutralLanguage>en</NeutralLanguage>
|
<NeutralLanguage>en</NeutralLanguage>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
@ -18,4 +18,4 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user