Files
cloudbeaver/webapp/packages/plugin-authentication/src/AuthProviderService.ts
T
2020-07-07 20:56:34 +03:00

44 lines
1.2 KiB
TypeScript

/*
* cloudbeaver - Cloud Database Manager
* Copyright (C) 2020 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0.
* you may not use this file except in compliance with the License.
*/
import { createHash } from 'crypto';
import { injectable } from '@cloudbeaver/core-di';
import { AuthProvidersResource } from './AuthProvidersResource';
@injectable()
export class AuthProviderService {
constructor(
private providers: AuthProvidersResource,
) { }
async processCredentials(providerId: string, credentials: Record<string, any>) {
const providers = await this.providers.load(null);
const provider = providers.find(provider => provider.id === providerId);
if (!provider) {
return credentials;
}
const credentialsProcessed = { ...credentials };
for (const parameter of provider.credentialParameters) {
if (parameter.encryption === 'hash' && parameter.id in credentialsProcessed) {
const md5Hash = createHash('md5')
.update(credentialsProcessed[parameter.id])
.digest('hex')
.toUpperCase();
credentialsProcessed[parameter.id] = md5Hash;
}
}
return credentialsProcessed;
}
}