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

View File

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

View File

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