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); }
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 }); }