示例#1
0
        private async Task <Tenant> CreatePoteantialTenant(RegisterRequest registerRequest)
        {
            var tenant = new Tenant
            {
                AppName      = registerRequest.Appname.Trim(),
                Host         = registerRequest.Hostname.Trim(),
                Responsibles = new List <TenantContact>
                {
                    new TenantContact {
                        Email          = registerRequest.Email,
                        Name           = registerRequest.Name,
                        EmailConfirmed = false,
                        PasswordHash   = _encryptionService.Encrypt(registerRequest.Password),
                        Surname        = registerRequest.Surname,
                        Tokens         = new List <TenantContactToken>
                        {
                            new TenantContactToken
                            {
                                Name  = "EmailConfirmationToken",
                                Valid = true,
                                Value = Guid.NewGuid().ToString().Replace("-", string.Empty)
                            }
                        }
                    }
                },
                TenantSetting = new TenantSetting {
                    Language = "tr-TR"
                }
            };

            var tenantLicence = new TenantLicence
            {
                Tenant  = tenant,
                Licence = new Licence {
                    LicenceType = Enums.LicenceType.Trial
                }
            };

            tenant.Licences = new List <TenantLicence> {
                tenantLicence
            };

            //finally insert tenant to host database (and additional other info)
            _hostRepository.Create(tenant);
            await _hostRepository.SaveAsync();

            return(tenant);
        }
示例#2
0
        public async Task <HostModel> Create(HostModel model)
        {
            var created = _repository.Create(model.ToEntity()).ToModel();

            created.Status = _cacheService.Get(created.IpAddress);

            return(await Task.FromResult(created).ConfigureAwait(false));
        }
        public async Task <AuthResponse> GenerateAuthResponseForUser(ApplicationUser user)
        {
            var tokenHandler   = new JwtSecurityTokenHandler();
            var secretKey      = _configuration.GetSection("JwtSettings")["SecretKey"];
            var tokenLifeTime  = _configuration.GetSection("JwtSettings")["TokenLifeTime"];
            var secretKeyBytes = Encoding.ASCII.GetBytes(secretKey);

            var claims = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, user.Email),
                new Claim(JwtRegisteredClaimNames.Email, user.Email),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim(JwtCustomClaimNames.Id, user.Id.ToString()),
            };

            var userClaims = await _userManager.GetClaimsAsync(user);

            claims.AddRange(userClaims);

            var userRoles = await _userManager.GetRolesAsync(user);

            foreach (var userRole in userRoles)
            {
                claims.Add(new Claim(ClaimTypes.Role, userRole));

                var role = await _roleManager.FindByNameAsync(userRole);

                if (role == null)
                {
                    continue;
                }

                var roleClaims = await _roleManager.GetClaimsAsync(role);

                foreach (var roleClaim in roleClaims)
                {
                    if (claims.Contains(roleClaim))
                    {
                        continue;
                    }

                    claims.Add(roleClaim);
                }
            }

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.Add(TimeSpan.Parse(tokenLifeTime)),
                SigningCredentials =
                    new SigningCredentials(new SymmetricSecurityKey(secretKeyBytes), SecurityAlgorithms.HmacSha256Signature)
            };

            var token = tokenHandler.CreateToken(tokenDescriptor);

            var newToken     = _tokenFactory.GenerateToken();
            var refreshToken = new RefreshToken
            {
                Token             = newToken,
                JwtId             = token.Id,
                ApplicationUserId = user.Id,
                //ExpiresOn = DateTime.Now.AddMonths(1)
                ExpiresOn = DateTime.SpecifyKind(DateTime.Now.AddMonths(1), DateTimeKind.Utc)
            };

            _hostRepository.Create(refreshToken);
            await _hostRepository.SaveAsync();

            return(new AuthResponse {
                AccessToken = new AccessToken(tokenHandler.WriteToken(token),
                                              (int)TimeSpan.Parse(tokenLifeTime).TotalMinutes),
                RefreshToken = refreshToken.Token
            });
        }