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);
        }
Exemplo n.º 2
0
        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");
            }
        }