Compare commits
6 Commits
3eb89216ef
...
07cfa5523d
Author | SHA1 | Date |
---|---|---|
yutent | 07cfa5523d | |
yutent | 24c056faf1 | |
yutent | d339d2872d | |
yutent | 11cd046552 | |
yutent | fc291dd12a | |
yutent | b7747e4db2 |
119
index.js
119
index.js
|
@ -5,61 +5,79 @@
|
|||
*/
|
||||
|
||||
export default class Controller {
|
||||
// 初始化方法, 取代原先的构造方法
|
||||
__f_i_v_e__(ctx, req, res) {
|
||||
this.context = ctx
|
||||
this.name = req.app
|
||||
this.request = req
|
||||
this.response = res
|
||||
#auth = null
|
||||
|
||||
get method() {
|
||||
return this.request.method
|
||||
}
|
||||
|
||||
get host() {
|
||||
return this.request.host
|
||||
}
|
||||
|
||||
get hostname() {
|
||||
return this.request.hostname
|
||||
}
|
||||
|
||||
get ua() {
|
||||
return this.request.headers['user-agent']
|
||||
}
|
||||
|
||||
get jwt() {
|
||||
return {
|
||||
result: this.#auth,
|
||||
sign: data => {
|
||||
let { __mix_key__ } = this.request
|
||||
return this.context.$$jwt.sign(data, __mix_key__)
|
||||
},
|
||||
verify: () => {
|
||||
this.#auth = null
|
||||
let token = this.request.header('authorization')
|
||||
let { __mix_key__ } = this.request
|
||||
|
||||
if (token) {
|
||||
this.#auth = this.context.$$jwt.verify(token, __mix_key__)
|
||||
}
|
||||
return this.#auth
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 定义一个模板变量
|
||||
assign(key, val) {
|
||||
if (val === undefined || val === null) {
|
||||
val = ''
|
||||
}
|
||||
key += ''
|
||||
if (this.context.$$views) {
|
||||
if (val === undefined || val === null) {
|
||||
val = ''
|
||||
}
|
||||
key += ''
|
||||
|
||||
if (key) {
|
||||
this.context.$$views.assign(key, val)
|
||||
if (key) {
|
||||
this.context.$$views.assign(key, val)
|
||||
}
|
||||
} else {
|
||||
throw new Error('Views module not installed.')
|
||||
}
|
||||
}
|
||||
|
||||
// 模板渲染, 参数是模板名, 可不带后缀, 默认是
|
||||
render(file, noParse = false) {
|
||||
this.context.$$views
|
||||
.render(file, noParse)
|
||||
.then(html => {
|
||||
this.response.render(html)
|
||||
})
|
||||
.catch(err => {
|
||||
this.response.error(err)
|
||||
})
|
||||
}
|
||||
|
||||
// jwt 生成token及校验token
|
||||
jwt(data) {
|
||||
var { enabled, ttl } = this.context.get('jwt')
|
||||
var { mixKey } = this.request
|
||||
var auth = this.request.header('authorization')
|
||||
|
||||
if (enabled) {
|
||||
if (data) {
|
||||
return this.context.$$jwt.sign(data, mixKey, ttl)
|
||||
} else {
|
||||
if (auth) {
|
||||
this.jwt.result = this.context.$$jwt.verify(auth, mixKey)
|
||||
return this.jwt.result
|
||||
}
|
||||
}
|
||||
if (this.context.$$views) {
|
||||
this.context.$$views
|
||||
.render(file, noParse)
|
||||
.then(html => {
|
||||
this.response.render(html)
|
||||
})
|
||||
.catch(err => {
|
||||
this.response.error(err)
|
||||
})
|
||||
} else {
|
||||
throw Error('Jwt was disabled.')
|
||||
throw new Error('Views module not installed.')
|
||||
}
|
||||
}
|
||||
|
||||
// cookie读写
|
||||
cookie(key, val, opt) {
|
||||
if (arguments.length < 2) {
|
||||
if (arguments.length === 1) {
|
||||
return this.request.cookie(key)
|
||||
}
|
||||
|
||||
|
@ -78,30 +96,17 @@ export default class Controller {
|
|||
|
||||
// 会话读写
|
||||
session(key, val) {
|
||||
var { enabled } = this.context.get('session')
|
||||
var { ssid } = this.request
|
||||
if (enabled) {
|
||||
let { ssid } = this.request
|
||||
if (this.context.$$session) {
|
||||
key += ''
|
||||
|
||||
if (arguments.length < 2) {
|
||||
// 这里返回的是Promise对象
|
||||
return this.context.$$session.get(ssid, key)
|
||||
}
|
||||
|
||||
key += ''
|
||||
this.context.$$session.set(ssid, key, val)
|
||||
} else {
|
||||
throw Error('Session was disabled.')
|
||||
throw new Error('Session was disabled.')
|
||||
}
|
||||
}
|
||||
|
||||
//针对框架定制的debug信息输出
|
||||
xdebug(err) {
|
||||
var msg = err
|
||||
if (this.context.get('debug')) {
|
||||
msg = err.message || err
|
||||
}
|
||||
|
||||
msg = encodeURIComponent(msg + '')
|
||||
|
||||
this.response.append('X-debug', msg)
|
||||
}
|
||||
}
|
||||
|
|
10
package.json
10
package.json
|
@ -1,11 +1,15 @@
|
|||
{
|
||||
"name": "@gm5/controller",
|
||||
"version": "1.0.0",
|
||||
"version": "2.0.0",
|
||||
"type": "module",
|
||||
"description": "控制器基类。",
|
||||
"main": "index.js",
|
||||
"author": "yutent <yutent.io@gmail.com>",
|
||||
"keywords": ["fivejs", "controller", "http"],
|
||||
"repository": "https://github.com/bytedo/gmf.controller.git",
|
||||
"keywords": [
|
||||
"fivejs",
|
||||
"controller",
|
||||
"http"
|
||||
],
|
||||
"repository": "https://git.wkit.fun/gm5/controller.git",
|
||||
"license": "MIT"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue