forked from ddrilling/AsbCloudServer
Merge branch 'NewRegister' into dev
This commit is contained in:
commit
23a467639a
@ -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;
|
||||||
|
@ -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(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user