feat: Convert helpers to use JS files

This commit is contained in:
Faruk AYDIN
2024-01-04 19:55:41 +01:00
parent 8819ddefa7
commit 85141812d9
48 changed files with 259 additions and 384 deletions

View File

@@ -0,0 +1,64 @@
import User from '../models/user';
import Identity from '../models/identity.ee';
const getUser = (user, providerConfig) => ({
name: user[providerConfig.firstnameAttributeName],
surname: user[providerConfig.surnameAttributeName],
id: user.nameID,
email: user[providerConfig.emailAttributeName],
role: user[providerConfig.roleAttributeName],
});
const findOrCreateUserBySamlIdentity = async (
userIdentity,
samlAuthProvider
) => {
const mappedUser = getUser(userIdentity, samlAuthProvider);
const identity = await Identity.query().findOne({
remote_id: mappedUser.id,
provider_type: 'saml',
});
if (identity) {
const user = await identity.$relatedQuery('user');
return user;
}
const mappedRoles = Array.isArray(mappedUser.role)
? mappedUser.role
: [mappedUser.role];
const samlAuthProviderRoleMapping = await samlAuthProvider
.$relatedQuery('samlAuthProvidersRoleMappings')
.whereIn('remote_role_name', mappedRoles)
.limit(1)
.first();
const createdUser = await User.query()
.insertGraph(
{
fullName: [mappedUser.name, mappedUser.surname]
.filter(Boolean)
.join(' '),
email: mappedUser.email,
roleId:
samlAuthProviderRoleMapping?.roleId || samlAuthProvider.defaultRoleId,
identities: [
{
remoteId: mappedUser.id,
providerId: samlAuthProvider.id,
providerType: 'saml',
},
],
},
{
relate: ['identities'],
}
)
.returning('*');
return createdUser;
};
export default findOrCreateUserBySamlIdentity;