public async Task <LoggedDto> EndRegister(EndRegisterDto entity, string uuid) { var token = ValidateRegistrationToken(entity.RegistrationToken); if (await _userService.IsIssetAsync(token.Id)) { throw new ClientException("r-token-already-used"); } else if (_userService.IsIssetByLogin(entity.Login)) { throw new ClientException("r-login-alrd-reg"); } else if (_userService.IsIssetByEmail(token.Claims.First(x => x.Type == "email").Value)) { throw new ClientException("r-email-alrd-reg"); } var user = new User { Id = token.Id, Login = entity.Login, Email = token.Claims.First(x => x.Type == "email").Value, Name = entity.Name, Surname = entity.Surname, Lastname = entity.Lastname, PhotoId = "default-user-photo", Birthday = entity.Birthday.Value, RoleId = int.Parse(token.Claims.First(x => x.Type == "role").Value), PasswordHash = PasswordHandler.CreatePasswordHash(entity.Password) }; var noPermissions = new List <Permission>(); if (token.Claims.First(x => x.Type == "noPermissions").Value.Length > 0) { foreach (var item in token.Claims.First(x => x.Type == "noPermissions").Value.Split(' ')) { noPermissions.Add(new Permission { Id = int.Parse(item) }); } } var usr = await _userService.AddAsync(user, noPermissions); usr.Role = await _roleService.GetAsync(usr.RoleId); return(await _loginService.Login(usr, uuid)); }
public async Task <ResultDto> End([FromBody, MyValidation] EndRegisterDto entity, [BindNever] string uuid) { return(ResultDto.Create(await _registrationService.EndRegister(entity, uuid))); }