feat: init project with miniprogram, cloud functions and admin console
这个提交包含在:
@@ -0,0 +1,62 @@
|
||||
var jwt = require('jsonwebtoken')
|
||||
|
||||
var JWT_SECRET = process.env.JWT_SECRET || 'hox_jwt_secret_change_in_production'
|
||||
var JWT_EXPIRES_IN = '7d'
|
||||
|
||||
function generateToken(userId, openid) {
|
||||
return jwt.sign(
|
||||
{ user_id: userId, openid: openid },
|
||||
JWT_SECRET,
|
||||
{ expiresIn: JWT_EXPIRES_IN }
|
||||
)
|
||||
}
|
||||
|
||||
function verifyToken(token) {
|
||||
try {
|
||||
return jwt.verify(token, JWT_SECRET)
|
||||
} catch (e) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
function generateAdminToken(adminId, username, role) {
|
||||
return jwt.sign(
|
||||
{ admin_id: adminId, username: username, role: role, type: 'admin' },
|
||||
JWT_SECRET,
|
||||
{ expiresIn: JWT_EXPIRES_IN }
|
||||
)
|
||||
}
|
||||
|
||||
function extractToken(event) {
|
||||
var header = event.headers || {}
|
||||
var auth = header['Authorization'] || header['authorization'] || header['authorization'] || ''
|
||||
if (auth.startsWith('Bearer ')) {
|
||||
return auth.substring(7)
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
function extractUser(event) {
|
||||
var token = extractToken(event)
|
||||
if (!token) return null
|
||||
var decoded = verifyToken(token)
|
||||
if (!decoded || decoded.type === 'admin') return null
|
||||
return decoded
|
||||
}
|
||||
|
||||
function extractAdmin(event) {
|
||||
var token = extractToken(event)
|
||||
if (!token) return null
|
||||
var decoded = verifyToken(token)
|
||||
if (!decoded || decoded.type !== 'admin') return null
|
||||
return decoded
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
generateToken: generateToken,
|
||||
verifyToken: verifyToken,
|
||||
generateAdminToken: generateAdminToken,
|
||||
extractToken: extractToken,
|
||||
extractUser: extractUser,
|
||||
extractAdmin: extractAdmin
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户