1
0

Merge branch 'NewRegister' into dev

This commit is contained in:
KharchenkoVladimir 2021-10-25 12:05:44 +05:00
commit 23a467639a
2 changed files with 21 additions and 18 deletions
AsbCloudInfrastructure/Services
AsbCloudWebApi/Controllers

View File

@ -45,7 +45,7 @@ namespace AsbCloudInfrastructure.Services
var identity = await GetClaimsUserAsync(login, password, token) var identity = await GetClaimsUserAsync(login, password, token)
.ConfigureAwait(false); .ConfigureAwait(false);
if (identity == default) if (identity == default || identity.User.State == 0)
return null; return null;
return new UserTokenDto return new UserTokenDto
@ -69,27 +69,33 @@ namespace AsbCloudInfrastructure.Services
public int Register(UserDto userDto) public int Register(UserDto userDto)
{ {
if (userDto.Login.Length < 3) if (userDto.Login is null || userDto.Login.Length is < 3 or > 50)
return -1; return -1;
if (userDto.Password.Length < 3) if (userDto.Password is null || userDto.Password.Length is < 3 or > 50)
return -2; return -2;
if (userDto.Email.Length > 255) if (userDto.Email?.Length > 255)
return -3; return -3;
if (userDto.Phone.Length > 50) if (userDto.Phone?.Length > 50)
return -4; return -4;
if (userDto.Position.Length > 255) if (userDto.Position?.Length > 255)
return -5; return -5;
var user = db.Users.FirstOrDefault(u => u.Login == userDto.Login);
if(user is not null)
return -6;
var salt = GenerateSalt(); var salt = GenerateSalt();
var user = new User var newUser = new User
{ {
IdCompany = userDto.IdCompany, IdCompany = userDto.IdCompany,
IdRole = userDto.IdRole, IdRole = 2, // simple user
State = 0,
Name = userDto.Name, Name = userDto.Name,
Surname = userDto.Surname, Surname = userDto.Surname,
Patronymic = userDto.Patronymic, Patronymic = userDto.Patronymic,
@ -98,17 +104,17 @@ namespace AsbCloudInfrastructure.Services
Position = userDto.Position, Position = userDto.Position,
Level = userDto.Level, Level = userDto.Level,
Login = userDto.Login, Login = userDto.Login,
PasswordHash = salt + ComputeHash(salt, userDto.Password) PasswordHash = salt + ComputeHash(salt, userDto.Password),
}; };
db.Users.Add(user); db.Users.Add(newUser);
try try
{ {
db.SaveChanges(); db.SaveChanges();
} }
catch //(Exception ex) catch //(Exception ex)
{ {
return -6; return -7;
} }
return 0; return 0;

View File

@ -36,7 +36,7 @@ namespace AsbCloudWebApi.Controllers
auth.Password, token).ConfigureAwait(false); auth.Password, token).ConfigureAwait(false);
if (userToken is null) if (userToken is null)
BadRequest();//"wrong login or password" Forbid();
return Ok(userToken); return Ok(userToken);
} }
@ -54,17 +54,13 @@ namespace AsbCloudWebApi.Controllers
} }
/// <summary> /// <summary>
/// Регистрация пользователя. Доступна администратору /// Отправить заявку на регистрацию. Заявка подтверждается администратором.
/// </summary> /// </summary>
/// <param name="user">Информация о новом пользователе</param>
/// <returns code="200">Ок</returns> /// <returns code="200">Ок</returns>
[Authorize]
[HttpPost] [HttpPost]
public IActionResult Register(UserDto user) public IActionResult Register(UserDto user)
{ {
const string roleName = "Администратор";
if (!User.IsInRole(roleName))
return Forbid($"You must be an {roleName}.");
var code = authService.Register(user); var code = authService.Register(user);
return code switch return code switch
{ {
@ -74,6 +70,7 @@ namespace AsbCloudWebApi.Controllers
-3 => BadRequest("Email не должен быть длиннее 255 знаков."), -3 => BadRequest("Email не должен быть длиннее 255 знаков."),
-4 => BadRequest("Телефон не должен быть длиннее 50 знаков."), -4 => BadRequest("Телефон не должен быть длиннее 50 знаков."),
-5 => BadRequest("Название должности не должно быть длиннее 255 символов."), -5 => BadRequest("Название должности не должно быть длиннее 255 символов."),
-6 => BadRequest("Пользователь с таким логином уже зарегистрирован."),
_ => BadRequest(), _ => BadRequest(),
}; };
} }