diff --git a/AsbCloudWebApi/AsbCloudWebApi.csproj b/AsbCloudWebApi/AsbCloudWebApi.csproj
index c5a832bc..fe1f5ddf 100644
--- a/AsbCloudWebApi/AsbCloudWebApi.csproj
+++ b/AsbCloudWebApi/AsbCloudWebApi.csproj
@@ -36,5 +36,9 @@
+
+
+
+
diff --git a/AsbCloudWebApi/Controllers/AuthController.cs b/AsbCloudWebApi/Controllers/AuthController.cs
index f082dc8e..d3b7a912 100644
--- a/AsbCloudWebApi/Controllers/AuthController.cs
+++ b/AsbCloudWebApi/Controllers/AuthController.cs
@@ -52,5 +52,50 @@ namespace AsbCloudWebApi.Controllers
var newToken = authService.Refresh(User);
return Ok(newToken);
}
+
+ ///
+ /// Регистрация пользователя. Доступна администратору
+ ///
+ /// Ок
+ [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(),
+ };
+ }
+
+ ///
+ /// Смена пароля пользователя. Доступна пользователю и администратору
+ ///
+ /// Ок
+ [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(),
+ };
+ }
}
}