diff --git a/packages/server/src/services/Users/UserTransformer.ts b/packages/server/src/services/Users/UserTransformer.ts new file mode 100644 index 000000000..958e71080 --- /dev/null +++ b/packages/server/src/services/Users/UserTransformer.ts @@ -0,0 +1,50 @@ +import { Transformer } from '@/lib/Transformer/Transformer'; + +export class UserTransformer extends Transformer { + /** + * Exclude these attributes from user object. + * @returns {Array} + */ + public excludeAttributes = (): string[] => { + return ['role']; + }; + + /** + * Includeded attributes. + * @returns {string[]} + */ + public includeAttributes = (): string[] => { + return ['roleName', 'roleDescription', 'roleSlug']; + }; + + /** + * Retrieves the localized role name if is predefined or stored name. + * @param role + * @returns {string} + */ + public roleName(user) { + return user.role.predefined + ? this.context.i18n.__(user.role.name) + : user.role.name; + } + + /** + * Retrieves the localized role description if is predefined or stored description. + * @param user + * @returns {string} + */ + public roleDescription(user) { + return user.role.predefined + ? this.context.i18n.__(user.role.description) + : user.role.description; + } + + /** + * Retrieves the role slug. + * @param user + * @returns {string} + */ + public roleSlug(user) { + return user.role.slug; + } +}