AuthController Добавлена регистрация пользователя и смена пароля

This commit is contained in:
Фролов 2021-09-07 09:49:25 +05:00
parent f2adaaa377
commit 73fab69b76
2 changed files with 49 additions and 0 deletions

View File

@ -36,5 +36,9 @@
</Content>
</ItemGroup>
<ItemGroup>
<Folder Include="wwwroot\admin\" />
</ItemGroup>
</Project>

View File

@ -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(),
};
}
}
}