init
This commit is contained in:
72
lib/factory/user.js
Normal file
72
lib/factory/user.js
Normal file
@@ -0,0 +1,72 @@
|
||||
const Joi = require('joi')
|
||||
const validate = require('./validate')
|
||||
|
||||
const validateRoles = function (value, helper, allowed) {
|
||||
const roles = value.split(' ')
|
||||
if (value.length < 8) {
|
||||
return helper.message('Password must be at least 8 characters long')
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Define the schema
|
||||
//
|
||||
const schema = {
|
||||
profile_image: Joi.string().optional(),
|
||||
username: Joi.string(),
|
||||
email: Joi.string().email({
|
||||
errorLevel: true,
|
||||
minDomainAtoms: 2
|
||||
}),
|
||||
auth_service: Joi.string().valid(
|
||||
'',
|
||||
'gitlab',
|
||||
'ldap',
|
||||
'saml',
|
||||
'google',
|
||||
'office365'
|
||||
).optional(),
|
||||
auth_data: Joi.string().optional().allow(''),
|
||||
password: Joi.string().optional(),
|
||||
nickname: Joi.string().optional(),
|
||||
first_name: Joi.string().optional(),
|
||||
last_name: Joi.string().optional(),
|
||||
position: Joi.string().optional(),
|
||||
roles: Joi.string().optional().valid(
|
||||
'system_user',
|
||||
'system_admin system_user'
|
||||
),
|
||||
teams: Joi.array().items(
|
||||
Joi.object({
|
||||
name: Joi.string(),
|
||||
roles: Joi.string().optional().valid(
|
||||
'team_user',
|
||||
'team_admin team_user'
|
||||
),
|
||||
channels: Joi.array().items(
|
||||
Joi.object({
|
||||
name: Joi.string(),
|
||||
roles: Joi.string().optional().valid(
|
||||
'channel_user',
|
||||
'channel_user channel_admin'
|
||||
)
|
||||
})
|
||||
)
|
||||
})
|
||||
),
|
||||
notify_props: Joi.object({
|
||||
mention_keys: Joi.string().optional().allow(''),
|
||||
}).optional(),
|
||||
}
|
||||
|
||||
//
|
||||
// Generate a valid object
|
||||
//
|
||||
module.exports = function (props) {
|
||||
return {
|
||||
type: 'user',
|
||||
user: validate(schema, props)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user