forked from ddrilling/AsbCloudServer
AuthController Добавлена регистрация пользователя и смена пароля
This commit is contained in:
parent
f2adaaa377
commit
73fab69b76
@ -36,5 +36,9 @@
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="wwwroot\admin\" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
</Project>
|
||||
|
@ -52,5 +52,50 @@ namespace AsbCloudWebApi.Controllers
|
||||
var newToken = authService.Refresh(User);
|
||||
return Ok(newToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Регистрация пользователя. Доступна администратору
|
||||
/// </summary>
|
||||
/// <returns code="200">Ок</returns>
|
||||
[Authorize]
|
||||
[HttpPost]
|
||||
public IActionResult Register(UserDto user)
|
||||
{
|
||||
const string roleName = "Администратор";
|
||||
if (!User.IsInRole(roleName))
|
||||
return Forbid($"You mast be an {roleName}.");
|
||||
|
||||
var code = authService.Register(user);
|
||||
return code switch
|
||||
{
|
||||
0 => Ok(),
|
||||
-1 => BadRequest("Логин должен быть длиннее 3х знаков."),
|
||||
-2 => BadRequest("Пароль должен быть длиннее 3х знаков."),
|
||||
_ => BadRequest(),
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Смена пароля пользователя. Доступна пользователю и администратору
|
||||
/// </summary>
|
||||
/// <returns code="200">Ок</returns>
|
||||
[Authorize]
|
||||
[HttpPut("{idUser}/ChangePassword")]
|
||||
public IActionResult ChangePassword([FromRoute]int idUser, [FromBody]string newPassword)
|
||||
{
|
||||
const string roleName = "Администратор";
|
||||
var allow = (User.GetUserId() == idUser) || User.IsInRole(roleName);
|
||||
|
||||
if (!allow)
|
||||
return Forbid($"You mast be an {roleName} or user with id:{idUser}.");
|
||||
|
||||
var code = authService.ChangePassword(idUser, newPassword);
|
||||
return code switch
|
||||
{
|
||||
0 => Ok(),
|
||||
-1 => BadRequest("Нет такого пользователя"),
|
||||
_ => BadRequest(),
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user