yuan_yi
3 years ago
2 changed files with 0 additions and 221 deletions
@ -1,189 +0,0 @@ |
|||
'use strict'; |
|||
const Hex = require('crypto-js/enc-hex'); |
|||
const MD5 = require('crypto-js/md5'); |
|||
const moment = require('moment'); |
|||
const uuid = require('uuid'); |
|||
|
|||
async function login(ctx, next) { |
|||
const transaction = await ctx.fs.dc.orm.transaction(); |
|||
try { |
|||
const models = ctx.fs.dc.models; |
|||
const params = ctx.request.body; |
|||
let password = Hex.stringify(MD5(params.password)); |
|||
|
|||
const userRes = await models.User.findOne({ |
|||
where: { |
|||
username: params.username, |
|||
password: password, |
|||
delete: false, |
|||
}, |
|||
attributes: { exclude: ['password'] }, |
|||
include: [{ |
|||
attributes: ["resourceId"], |
|||
model: models.UserResource |
|||
}] |
|||
}); |
|||
|
|||
if (!userRes) { |
|||
ctx.status = 400; |
|||
ctx.body = { |
|||
"message": "账号或密码错误" |
|||
} |
|||
} else if (!userRes.enable) { |
|||
ctx.status = 400; |
|||
ctx.body = { message: "该用户已被禁用" } |
|||
} else { |
|||
const token = uuid.v4(); |
|||
|
|||
let userRslt = Object.assign(userRes.dataValues, { |
|||
authorized: true, |
|||
token: token, |
|||
userResources: userRes.userResources.map(r => r.resourceId), |
|||
}); |
|||
|
|||
await models.UserToken.create({ |
|||
token: token, |
|||
userInfo: userRslt, |
|||
expired: moment().add(30, 'days').format() |
|||
}); |
|||
|
|||
ctx.status = 200; |
|||
ctx.body = userRslt; |
|||
} |
|||
await transaction.commit(); |
|||
} catch (error) { |
|||
await transaction.rollback(); |
|||
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
|||
ctx.status = 400; |
|||
ctx.body = { |
|||
"message": "登录失败" |
|||
} |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 微信小程序登录 |
|||
* @@requires.body {phone-手机号, password-密码} ctx |
|||
*/ |
|||
async function wxLogin(ctx, next) { |
|||
const transaction = await ctx.fs.dc.orm.transaction(); |
|||
try { |
|||
const models = ctx.fs.dc.models; |
|||
const params = ctx.request.body; |
|||
let password = Hex.stringify(MD5(params.password)); |
|||
const userRes = await models.User.findOne({ |
|||
where: { |
|||
phone: params.phone, |
|||
password: password, |
|||
delete: false, |
|||
}, |
|||
attributes: { exclude: ['password'] } |
|||
}); |
|||
if (!userRes) { |
|||
ctx.status = 400; |
|||
ctx.body = { message: "手机号或密码错误" } |
|||
} else if (!userRes.enable) { |
|||
ctx.status = 400; |
|||
ctx.body = { message: "该用户已被禁用" } |
|||
} else { |
|||
const token = uuid.v4(); |
|||
//获取用户关注区域信息
|
|||
const departmentRes = await models.Department.findOne({ where: { id: userRes.departmentId } }); |
|||
let attentionRegion = departmentRes; |
|||
while (attentionRegion.dependence && attentionRegion.type != 1) { |
|||
const departmentParent = await models.Department.findOne({ where: { id: attentionRegion.dependence } }); |
|||
attentionRegion = { |
|||
...departmentParent.dataValues, |
|||
nextRegin: attentionRegion |
|||
} |
|||
} |
|||
//获取用户权限信息
|
|||
const resourceRes = await models.UserResource.findAll({ |
|||
where: { |
|||
userId: userRes.id |
|||
}, |
|||
include: [{ |
|||
model: models.Resource, |
|||
attributes: ['code', 'name'], |
|||
}], |
|||
attributes: [] |
|||
}); |
|||
let userRslt = Object.assign({ |
|||
authorized: true, |
|||
token: token, |
|||
...userRes.dataValues |
|||
}); |
|||
await models.UserToken.create({ |
|||
token: token, |
|||
userInfo: userRslt, |
|||
expired: moment().add(30, 'day').format('YYYY-MM-DD HH:mm:ss') |
|||
}, { transaction: transaction }); |
|||
ctx.status = 200; |
|||
ctx.body = Object.assign({ |
|||
...userRslt, |
|||
userRegionType: departmentRes.type,//1-市级,2-区县级,3-乡镇级,4-村级
|
|||
attentionRegion: attentionRegion, |
|||
resources: resourceRes.map(r => r.resource) |
|||
}); |
|||
} |
|||
await transaction.commit(); |
|||
} catch (error) { |
|||
await transaction.rollback(); |
|||
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
|||
ctx.status = 400; |
|||
ctx.body = { |
|||
"message": "登录失败" |
|||
} |
|||
} |
|||
} |
|||
|
|||
async function logout(ctx) { |
|||
try { |
|||
const { token, code } = ctx.request.body; |
|||
const models = ctx.fs.dc.models; |
|||
|
|||
await models.UserToken.destroy({ |
|||
where: { |
|||
token: token, |
|||
}, |
|||
}); |
|||
|
|||
ctx.status = 204; |
|||
} catch (error) { |
|||
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
|||
ctx.status = 400; |
|||
ctx.body = { |
|||
"message": "登出失败" |
|||
} |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 微信小程序登出 |
|||
* @request.body {token-用户登录Token} ctx |
|||
*/ |
|||
async function wxLogout(ctx) { |
|||
try { |
|||
const { token } = ctx.request.body; |
|||
const models = ctx.fs.dc.models; |
|||
await models.UserToken.destroy({ |
|||
where: { |
|||
token: token, |
|||
}, |
|||
}); |
|||
ctx.status = 204; |
|||
} catch (error) { |
|||
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
|||
ctx.status = 400; |
|||
ctx.body = { |
|||
"message": "登出失败" |
|||
} |
|||
} |
|||
} |
|||
|
|||
module.exports = { |
|||
login, |
|||
wxLogin, |
|||
logout, |
|||
wxLogout |
|||
}; |
@ -1,32 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
const auth = require('../../controllers/auth'); |
|||
|
|||
module.exports = function (app, router, opts) { |
|||
/** |
|||
* @api {Post} login 登录. |
|||
* @apiVersion 1.0.0 |
|||
* @apiGroup Auth |
|||
*/ |
|||
app.fs.api.logAttr['POST/login'] = { content: '登录', visible: true }; |
|||
router.post('/login', auth.login); |
|||
|
|||
/** |
|||
* @api {POST} wxLogin 微信小程序登录.(使用手机号、密码登录) |
|||
* @apiVersion 1.0.0 |
|||
* @apiGroup Auth |
|||
*/ |
|||
app.fs.api.logAttr['POST/wxLogin'] = { content: '微信小程序登录', visible: true }; |
|||
router.post('/wxLogin', auth.wxLogin); |
|||
|
|||
app.fs.api.logAttr['PUT/logout'] = { content: '登出', visible: false }; |
|||
router.put('/logout', auth.logout); |
|||
|
|||
/** |
|||
* @api {PUT} wxLogout 微信小程序登出 |
|||
* @apiVersion 1.0.0 |
|||
* @apiGroup Auth |
|||
*/ |
|||
app.fs.api.logAttr['PUT/wxLogout'] = { content: '登出', visible: false }; |
|||
router.put('/wxLogout', auth.wxLogout); |
|||
}; |
Loading…
Reference in new issue