From 0347864fde57262bde94e7b229ddf53f746307cf Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Thu, 15 Feb 2024 02:15:19 +0100 Subject: [PATCH] feat: Introduce serializers --- packages/backend/src/serializers/index.js | 9 ++++++ .../backend/src/serializers/permission.js | 13 ++++++++ packages/backend/src/serializers/role.js | 13 ++++++++ packages/backend/src/serializers/user.js | 32 +++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 packages/backend/src/serializers/index.js create mode 100644 packages/backend/src/serializers/permission.js create mode 100644 packages/backend/src/serializers/role.js create mode 100644 packages/backend/src/serializers/user.js diff --git a/packages/backend/src/serializers/index.js b/packages/backend/src/serializers/index.js new file mode 100644 index 00000000..bd07629c --- /dev/null +++ b/packages/backend/src/serializers/index.js @@ -0,0 +1,9 @@ +import userSerializer from './user.js'; +import roleSerializer from './role.js'; + +const serializers = { + User: userSerializer, + Role: roleSerializer, +}; + +export default serializers; diff --git a/packages/backend/src/serializers/permission.js b/packages/backend/src/serializers/permission.js new file mode 100644 index 00000000..b68868c9 --- /dev/null +++ b/packages/backend/src/serializers/permission.js @@ -0,0 +1,13 @@ +const permissionSerializer = (permission) => { + return { + id: permission.id, + roleId: permission.roleId, + action: permission.action, + subject: permission.subject, + conditions: permission.conditions, + createdAt: permission.createdAt, + updatedAt: permission.updatedAt, + }; +}; + +export default permissionSerializer; diff --git a/packages/backend/src/serializers/role.js b/packages/backend/src/serializers/role.js new file mode 100644 index 00000000..1835a093 --- /dev/null +++ b/packages/backend/src/serializers/role.js @@ -0,0 +1,13 @@ +const roleSerializer = (role) => { + return { + id: role.id, + name: role.name, + key: role.key, + description: role.description, + createdAt: role.createdAt, + updatedAt: role.updatedAt, + isAdmin: role.isAdmin, + }; +}; + +export default roleSerializer; diff --git a/packages/backend/src/serializers/user.js b/packages/backend/src/serializers/user.js new file mode 100644 index 00000000..763a88b0 --- /dev/null +++ b/packages/backend/src/serializers/user.js @@ -0,0 +1,32 @@ +import roleSerializer from './role.js'; +import permissionSerializer from './permission.js'; +import appConfig from '../config/app.js'; + +const userSerializer = (user) => { + let userData = { + id: user.id, + email: user.email, + createdAt: user.createdAt, + updatedAt: user.updatedAt, + fullName: user.fullName, + roleId: user.roleId, + }; + + if (user.role) { + userData.role = roleSerializer(user.role); + } + + if (user.permissions) { + userData.permissions = user.permissions.map((permission) => + permissionSerializer(permission) + ); + } + + if (appConfig.isCloud && user.trialExpiryDate) { + userData.trialExpiryDate = user.trialExpiryDate; + } + + return userData; +}; + +export default userSerializer;