public async Task <RegistrationResult> RegisterClientAsync( string tenantId, long clientId, string requestEmail, string requestPassword, string requestHint, string requestPin) { var entity = AuthDataEntity.Generate(tenantId, requestEmail); entity.ClientId = clientId; entity.Hint = requestHint; entity.Email = requestEmail; entity.PasswordHash = requestPassword.ToBase64(); entity.PinHash = requestPin.ToSha256().ToBase64(); entity.TenantId = tenantId; var insertSuccess = await _dataWriter.TryInsertAsync(entity); if (!insertSuccess) { var exist = await TryGetAuthData(entity.TenantId, entity.Email); if (exist != null) { return(new RegistrationResult() { IsEmailAlreadyExist = true, IsSuccess = false }); } } var indexEntity = AuthDataIndexByIdEntity.Generate(tenantId, clientId, requestEmail); await _indexDataWriter.InsertOrReplaceAsync(indexEntity); return(new RegistrationResult() { IsEmailAlreadyExist = false, ClientIdentity = new ClientIdentity() { ClientId = entity.ClientId, TenantId = entity.TenantId }, IsSuccess = true }); }
public async Task <ClientIdentity> Login(string tenantId, string username, string password) { var data = await _dataWriter.TryGetAsync(AuthDataEntity.GeneratePartitionKey(), AuthDataEntity.GenerateRowKey(tenantId, username)); if (data.PasswordHash == password.ToSha256().ToBase64()) { var indexEntity = AuthDataIndexByIdEntity.Generate(data.TenantId, data.ClientId, data.Email); await _indexDataWriter.InsertOrReplaceAsync(indexEntity); return(new ClientIdentity() { ClientId = data.ClientId, TenantId = data.TenantId }); } return(null); }