UNPKG

@flowfuse/flowfuse

Version:

An open source low-code development platform

102 lines (97 loc) 2.87 kB
module.exports = function (app) { app.addSchema({ $id: 'User', type: 'object', allOf: [{ $ref: 'UserSummary' }], properties: { email: { type: 'string' }, email_verified: { type: 'boolean' }, defaultTeam: { type: 'string' }, sso_enabled: { type: 'boolean' }, mfa_enabled: { type: 'boolean' }, free_trial_available: { type: 'boolean' }, tcs_accepted: { type: 'string' }, password_expired: { type: 'boolean' }, pendingEmailChange: { type: 'boolean' } } }) function userProfile (user) { const result = userSummary(user) if (user.email) { result.email = user.email } if (user.password_expired) { result.password_expired = true } if (app.settings.get('user:tcs-required') && user.tcs_accepted) { // Only include the tcs_accepted date if 'tcs-required' is enabled result.tcs_accepted = user.tcs_accepted } result.email_verified = user.email_verified if (user.defaultTeamId) { result.defaultTeam = app.db.models.Team.encodeHashid(user.defaultTeamId) } if (app.config.features.enabled('sso')) { result.sso_enabled = !!user.sso_enabled } if (app.config.features.enabled('mfa')) { result.mfa_enabled = !!user.mfa_enabled } return result } app.addSchema({ $id: 'UserSummary', type: 'object', properties: { id: { type: 'string' }, username: { type: 'string' }, name: { type: 'string' }, avatar: { type: 'string' }, admin: { type: 'boolean' }, createdAt: { type: 'string' }, suspended: { type: 'boolean' } } }) function userSummary (user) { const result = { id: user.hashid }; [ 'username', 'name', 'avatar', 'admin', 'createdAt', 'suspended' ].forEach(p => { result[p] = user[p] }) return result } app.addSchema({ $id: 'TeamMemberList', type: 'array', items: { allOf: [{ $ref: 'UserSummary' }], properties: { role: { type: 'number' } } } }) function teamMemberList (users) { const result = users.map(u => { const user = userSummary(u) user.role = u.Teams[0].TeamMember.role return user }) return result } app.addSchema({ $id: 'UserList', type: 'array', items: { $ref: 'User' } }) return { userSummary, userProfile, teamMemberList } }