public async Task <AuthenticateResult> Authenticate(AuthenticateInput input, CancellationToken ct) { using (DataFilter.Disable <IMultiTenant>()) { var identityUser = await UserManager.FindByEmailAsync(input.UsernameOrEmail) ?? await UserManager.FindByNameAsync(input.UsernameOrEmail); if (!await UserManager.CheckPasswordAsync(identityUser, input.Password)) { throw new BusinessException(ScoringDomainErrorCodes.AuthenticateFailed); } if (identityUser == null) { throw new BusinessException(ScoringDomainErrorCodes.AuthenticateFailed); } var accessToken = await AuthJwtProvider.GenerateJwt(identityUser, ct); return(new AuthenticateResult(accessToken, AuthJwtProvider.JwtSettings.ExpirationDays.TotalSeconds)); } }
public async Task <RegisterTenantResult> Create(RegisterTenantInput input, CancellationToken ct) { using (DataFilter.Disable <IMultiTenant>()) { var existsTenant = await TenantRepository.FindByNameAsync(input.Name, false, ct); if (existsTenant != null) { throw new BusinessException(ScoringDomainErrorCodes.TenantAlreadyExists) .WithData("name", input.Name); } } // Create tenant var tenant = await TenantManager.CreateAsync(input.Name); tenant = await TenantRepository.InsertAsync(tenant, true, ct); IdentityUser adminIdentity; using (CurrentTenant.Change(tenant.Id)) { await DataSeeder.SeedAsync( new DataSeedContext(tenant.Id) .WithProperty("AdminEmail", input.AdminEmailAddress) .WithProperty("AdminPassword", input.AdminPassword) ); adminIdentity = await UserManager.FindByEmailAsync(input.AdminEmailAddress); } var adminTokenDto = new RegisterAdminTokenDto(await AuthJwtProvider.GenerateJwt(adminIdentity, ct)); var tenantDto = ObjectMapper.Map <Tenant, TenantDto>(tenant); return(new RegisterTenantResult(adminTokenDto, tenantDto)); }