roles: {
// admin
SUPER_ADMIN: {corp_id: 'yuntun', role_id: 'super_admin'}, // 可分配系统权限、配置系统全局变量、用户数据最高权限、公司数据最高权限
GENERAL_ADMIN: {corp_id: 'yuntun', role_id: 'general_admin'}, // 管理员角色可以为其他公司分配系统权限、配置系统全局变量、用户数据最高权限
THIRDPART_ADMIN: {corp_id: 'corp_id', role_id: 'thirdpart_admin'}, // 第三方管理员角色可以为其公司分配系统权限、配置系统变量、其公司员工数据的最高权限
// yuntun user
YUNTUN_GENERAL_USER: {corp_id: 'yuntun', role_id: 'general_user'}, // 云吞普通已注册用户,可以线上使用云吞提供的资源、服务
YUNTUN_VIP_USER: {corp_id: 'yuntun', role_id: 'vip_user'}, // 云吞付费用户,可以线上、线下使用云吞提供的资源、服务
YUNTUN_ANONYMOUS_USER: {corp_id: 'yuntun', role_id: 'anonymous_user'}, // 云吞匿名用户,只通过微信登陆,未绑定手机号的用户,该部分用户只能查看线上云吞提供的基础页面
// thirdpart user
THIRDPART_GENERAL_USER: {corp: 'corp_id', role_id: 'general_user'}, // 第三方公司的普通用户(一般是微信用户)
THIRDPART_VIP_USER: {corp: 'corp_id', role_id: 'vip_user'}, // 根据第三方公司的实际业务,赋予使用第三方业务管理的权限,可发起活动、收集活动数据
THIRDPART_ANONYMOUS_USER: {corp: 'corp_id', role_id: 'anonymous_user'} // 根据第三方业务的实际情况,设置,不作处理权限同 普通用户
}
// 绑定手机号及相关标志(设备,用户等信息)
{
method: 'GET', path: '/bind_phone',
config: {
auth: false,
description: '绑定手机号及相关标志(设备,用户等信息)',
tags: ['api', 'auth'],
validate: {
query: Joi.object({
phone: Joi.string().required(),
sid: Joi.string().required().description(`
For now, sid = 'webglVendorAndRenderer', created when phone entered, and btn bind_phone clicked, used to limit invoke times`),
unionid: Joi.string().optional(),
}).unknown()
},
},
handler: async (request, h) => {
const result = {
code: 0 | -1,
msg: '',
};
return h.response(result);
},
},
// 验证短信验证码登录
{
method: 'GET', path: '/login',
config: {
auth: false,
description: '验证短信验证码登录',
tags: ['api', 'auth'],
validate: {
query: Joi.object({
phone: Joi.string().required(),
code: Joi.string().required(),
sid: Joi.string().required().description(`sid = 'webglVendorAndRenderer'`),
unionid: Joi.string().optional(),
}).unknown()
},
},
handler: async (request, h) => {
// TODO: 数据库user表中根据手机号获取用户信息,无则插入一条新数据,uid根据phone生成md5值
const result = {
code: 0 | -1,
msg: '',
data: 'jwt token', // jwt token info include user info exlcude passwd, client used to store in cookie.
};
return h.response(result);
},
},
// 根据unionid、uid、phone获取用户信息
{
method: 'GET', path: '/userinfo',
config: {
auth: false,
description: '根据unionid、uid、phone获取用户信息',
tags: ['api', 'auth'],
validate: {
query: Joi.object({
phone: Joi.string().optional(),
uid: Joi.string().optional(),
unionid: Joi.string().optional(),
}).xor('phone', 'uid', 'unionid')
}
},
handler: async (request, h) => {
// TODO: users.findOne({ $or: [ {phone}, {uid}, {unionid} ] }, ['-_id', '-passwd']);
const result = {
code: 0 | -1,
msg: '',
data: 'user data', // jwt token info include user info exlcude passwd, client used to store in cookie.
};
return h.response(result);
}
},
//