public async Task <User> RegisterUser(RegisterInModel registerInModel) { var provider = await context.AuthorizationProviders.Include(x => x.AuthorizationProviderType).ThenInclude((x => x.AuthorizationProviderCenter)).FirstOrDefaultAsync(x => x.Key == token); if (provider == null) { throw ExceptionFactory.SoftException(ExceptionEnum.ProviderKeyNotFound, "provider key not found"); } if (provider.AuthorizationProviderType.AuthorizationProviderCenter.Title != "Telegram") { throw ExceptionFactory.SoftException(ExceptionEnum.AuthCenterNotFound, "provider key not for telegram register service"); } var user = new User { Name = registerInModel.Name, Surname = registerInModel.Surname, CreatedDatetime = DateTime.Now, }; user.UserSecurities.Add(new UserSecurity { RealId = registerInModel.RealId, AuthorizationCenterId = provider.AuthorizationProviderType.AuthorizationProviderCenterId, }); await context.Users.AddAsync(user); await context.SaveChangesAsync(); return(user); }
public async Task <AuthorizationResponse> Register([FromBody] RegisterInModel registerInModel) { var isProviderTokenExist = Request.Headers.TryGetValue("ProviderToken", out var providerToken); if (isProviderTokenExist) { var providerTokenComponents = providerToken.ToString().Split(" "); if (providerTokenComponents.Length == 2) { var regService = RegisterServiceFactory.GetRegisterServiceCenter(providerTokenComponents[0], providerTokenComponents[1], serviceProvider); if (regService != null) { var user = await regService.RegisterUser(registerInModel); var token = jwtTokenService.GenerateToken(regService.GetAuthCenterName(), jwtTokenService.GetIdentity(user.Id, user.UserSecurities.First().AuthorizationCenterId, await regService.GetProviderId())); return(new AuthorizationResponse { Name = user.Name, UserId = user.Id, Token = token, }); } else { throw ExceptionFactory.SoftException(ExceptionEnum.AuthCenterNotFound, "AuthCenterNotFound"); } } else { throw ExceptionFactory.SoftException(ExceptionEnum.InvalidProviderTokenFormat, "InvalidProviderTokenFormat"); } } else { throw ExceptionFactory.SoftException(ExceptionEnum.ProviderTokenAbsent, "ProviderToken"); } }
public async Task <User> RegisterUser(RegisterInModel registerInModel) { if (registerInModel.Login != null && registerInModel.Password != null) { var userSec = await context.UserSecurities .Include(x => x.User) .FirstOrDefaultAsync(x => x.Login == registerInModel.Login); if (userSec != null) { throw ExceptionFactory.FriendlyException(ExceptionEnum.LoginExist, "login already exist"); } var user = new User { Name = registerInModel.Login, Surname = registerInModel.Surname, CreatedDatetime = DateTime.Now, }; await context.Users.AddAsync(user); await context.SaveChangesAsync(); user.UserSecurities.Add(new UserSecurity { Login = registerInModel.Login, Password = registerInModel.Password, AuthorizationCenterId = 1, RealId = user.Id }); await context.SaveChangesAsync(); return(user); } else { throw ExceptionFactory.SoftException(ExceptionEnum.InvalidLoginOrPassword, "InvalidLoginOrPassword"); } }