mirror of
https://github.com/HackPlan/RootPanel.git
synced 2026-04-29 20:16:08 +08:00
router account/register
This commit is contained in:
@@ -40,9 +40,15 @@ exports.run = ->
|
|||||||
app.config = require '../config'
|
app.config = require '../config'
|
||||||
app.package = require './package.json'
|
app.package = require './package.json'
|
||||||
app.pluggable = require './core/pluggable'
|
app.pluggable = require './core/pluggable'
|
||||||
|
app.middleware = require './core/middleware'
|
||||||
|
app.token_manager = require './core/token_manager'
|
||||||
|
|
||||||
app.models =
|
app.models =
|
||||||
mAccount: require './model/account'
|
mAccount: require './model/account'
|
||||||
|
mBalanceLog: require './model/balance_log'
|
||||||
|
mCouponCode: require './model/coupon_code'
|
||||||
|
mSecurityLog: require './model/security_log'
|
||||||
|
mTicket: require './model/tickets'
|
||||||
|
|
||||||
app.use connect.json()
|
app.use connect.json()
|
||||||
app.use connect.urlencoded()
|
app.use connect.urlencoded()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
mAccount = require '../model/account'
|
mAccount = require './model/account'
|
||||||
|
|
||||||
exports.parseToken = (req, res, next) ->
|
exports.parseToken = (req, res, next) ->
|
||||||
if req.headers['x-token']
|
if req.headers['x-token']
|
||||||
@@ -60,4 +60,4 @@ exports.requireInService = (service_name) ->
|
|||||||
unless service_name in req.account.attribute.services
|
unless service_name in req.account.attribute.services
|
||||||
return res.error 'not_in_service'
|
return res.error 'not_in_service'
|
||||||
|
|
||||||
next()
|
next()
|
||||||
@@ -11,6 +11,7 @@ exports.plugins = {}
|
|||||||
|
|
||||||
exports.hooks =
|
exports.hooks =
|
||||||
account:
|
account:
|
||||||
|
# function(account, callback(is_allow))
|
||||||
username_filter: []
|
username_filter: []
|
||||||
# function(account, callback)
|
# function(account, callback)
|
||||||
before_register: []
|
before_register: []
|
||||||
|
|||||||
@@ -1,15 +1,11 @@
|
|||||||
config = require '../../config'
|
{renderAccount, errorHandling, requireAuthenticate} = app.middleware
|
||||||
utils = require './utils'
|
{mAccount, mSecurityLog, mCouponCode} = app.models
|
||||||
{renderAccount, errorHandling, requireAuthenticate} = require './middleware'
|
{pluggable, config, utils, token_manager} = app
|
||||||
|
|
||||||
mAccount = require '../model/account'
|
|
||||||
mSecurityLog = require '../model/security_log'
|
|
||||||
mCouponCode = require '../model/coupon_code'
|
|
||||||
|
|
||||||
module.exports = exports = express.Router()
|
module.exports = exports = express.Router()
|
||||||
|
|
||||||
exports.get '/signup', renderAccount, (req, res) ->
|
exports.get '/register', renderAccount, (req, res) ->
|
||||||
res.render 'account/signup'
|
res.render 'account/register'
|
||||||
|
|
||||||
exports.get '/login', renderAccount, (req, res) ->
|
exports.get '/login', renderAccount, (req, res) ->
|
||||||
res.render 'account/login'
|
res.render 'account/login'
|
||||||
@@ -17,7 +13,7 @@ exports.get '/login', renderAccount, (req, res) ->
|
|||||||
exports.get '/setting', requireAuthenticate, renderAccount, (req, res) ->
|
exports.get '/setting', requireAuthenticate, renderAccount, (req, res) ->
|
||||||
res.render 'account/setting'
|
res.render 'account/setting'
|
||||||
|
|
||||||
exports.post '/signup', errorHandling, (req, res) ->
|
exports.post '/register', errorHandling, (req, res) ->
|
||||||
unless utils.rx.username.test req.body.username
|
unless utils.rx.username.test req.body.username
|
||||||
return res.error 'invalid_username'
|
return res.error 'invalid_username'
|
||||||
|
|
||||||
@@ -27,34 +23,49 @@ exports.post '/signup', errorHandling, (req, res) ->
|
|||||||
unless utils.rx.password.test req.body.password
|
unless utils.rx.password.test req.body.password
|
||||||
return res.error 'invalid_password'
|
return res.error 'invalid_password'
|
||||||
|
|
||||||
callback = ->
|
async.each pluggable.account.username_filter, (hook_callback, callback) ->
|
||||||
mAccount.byUsername req.body.username, (err, account) ->
|
hook_callback account, (is_allow) ->
|
||||||
if account
|
if is_allow
|
||||||
return res.error 'username_exist'
|
callback()
|
||||||
|
else
|
||||||
|
callback true
|
||||||
|
|
||||||
mAccount.byEmail req.body.email, (err, account) ->
|
, (not_allow) ->
|
||||||
if account
|
if not_allow
|
||||||
return res.error 'email_exist'
|
return res.error 'username_exist'
|
||||||
|
|
||||||
mAccount.register req.body.username, req.body.email, req.body.password, (err, account) ->
|
async.parallel
|
||||||
mAccount.createToken account,
|
username: (callback) ->
|
||||||
ip: req.headers['x-real-ip']
|
mAccount.fineOne
|
||||||
ua: req.headers['user-agent']
|
username: req.body.username
|
||||||
, (err, token)->
|
, (err, account) ->
|
||||||
res.cookie 'token', token,
|
if account
|
||||||
expires: new Date(Date.now() + config.account.cookie_time)
|
res.error 'username_exist'
|
||||||
|
|
||||||
res.json
|
callback account
|
||||||
id: account._id
|
|
||||||
|
|
||||||
if 'linux' in config.plugin.available_services
|
email: (callback) ->
|
||||||
require('../../plugin/linux/monitor').loadPasswd (passwd_cache) ->
|
mAccount.findOne
|
||||||
if req.body.username in _.values(passwd_cache)
|
email: req.body.email
|
||||||
return res.error 'username_exist'
|
, (err, account) ->
|
||||||
|
if account
|
||||||
|
res.error 'email_exist'
|
||||||
|
|
||||||
callback()
|
callback account
|
||||||
else
|
|
||||||
callback()
|
, (err) ->
|
||||||
|
return if err
|
||||||
|
|
||||||
|
mAccount.register _.pick(req.body, 'username', 'email', 'password'), (err, account) ->
|
||||||
|
token_manager.createToken account,
|
||||||
|
ip: req.headers['x-real-ip']
|
||||||
|
ua: req.headers['user-agent']
|
||||||
|
, (token)->
|
||||||
|
res.cookie 'token', token,
|
||||||
|
expires: new Date(Date.now() + config.account.cookie_time)
|
||||||
|
|
||||||
|
res.json
|
||||||
|
id: account._id
|
||||||
|
|
||||||
exports.post '/login', errorHandling, (req, res) ->
|
exports.post '/login', errorHandling, (req, res) ->
|
||||||
mAccount.byUsernameOrEmailOrId req.body.username, (err, account) ->
|
mAccount.byUsernameOrEmailOrId req.body.username, (err, account) ->
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{requireAdminAuthenticate, renderAccount} = require './middleware'
|
{requireAdminAuthenticate, renderAccount} = require './../middleware'
|
||||||
|
|
||||||
mAccount = require '../model/account'
|
mAccount = require '../model/account'
|
||||||
mTicket = require '../model/ticket'
|
mTicket = require '../model/ticket'
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ config = require '../../config'
|
|||||||
billing = require '../billing'
|
billing = require '../billing'
|
||||||
plugin = require '../pluggable'
|
plugin = require '../pluggable'
|
||||||
bitcoin = require '../bitcoin'
|
bitcoin = require '../bitcoin'
|
||||||
{requireAuthenticate, renderAccount} = require './middleware'
|
{requireAuthenticate, renderAccount} = require './../middleware'
|
||||||
|
|
||||||
mAccount = require '../model/account'
|
mAccount = require '../model/account'
|
||||||
mBalance = require '../model/balance_log'
|
mBalance = require '../model/balance_log'
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ config = require '../../config'
|
|||||||
plugin = require '../pluggable'
|
plugin = require '../pluggable'
|
||||||
billing = require '../billing'
|
billing = require '../billing'
|
||||||
plan = require '../plan'
|
plan = require '../plan'
|
||||||
{requireAuthenticate} = require './middleware'
|
{requireAuthenticate} = require './../middleware'
|
||||||
|
|
||||||
mAccount = require '../model/account'
|
mAccount = require '../model/account'
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
markdown = require('markdown').markdown
|
markdown = require('markdown').markdown
|
||||||
|
|
||||||
{requireAuthenticate, renderAccount, getParam} = require './middleware'
|
{requireAuthenticate, renderAccount, getParam} = require './../middleware'
|
||||||
|
|
||||||
mAccount = require '../model/account'
|
mAccount = require '../model/account'
|
||||||
mTicket = require '../model/ticket'
|
mTicket = require '../model/ticket'
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
exports.rx =
|
|
||||||
username: /^[a-z][0-9a-z_]{2,23}$/
|
|
||||||
email: /^\w+([-+.]\w+)*@\w+([-+.]\w+)*$/
|
|
||||||
password: /^.+$/
|
|
||||||
domain: /(\*\.)?[A-Za-z0-9]+(\-[A-Za-z0-9]+)*(\.[A-Za-z0-9]+(\-[A-Za-z0-9]+)*)*/
|
|
||||||
filename: /[A-Za-z0-9_\-\.]+/
|
|
||||||
url: /^https?:\/\/[^\s;]*$/
|
|
||||||
|
|
||||||
exports.checkHomeFilePath = (account, path) ->
|
exports.checkHomeFilePath = (account, path) ->
|
||||||
home_dir = "/home/#{account.username}/"
|
home_dir = "/home/#{account.username}/"
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ unless _.find(app.view_hook.menu_bar, (i) -> i.href == '/wiki/')
|
|||||||
href: '/wiki/'
|
href: '/wiki/'
|
||||||
html: '用户手册'
|
html: '用户手册'
|
||||||
|
|
||||||
{renderAccount} = require './middleware'
|
{renderAccount} = require './../middleware'
|
||||||
|
|
||||||
module.exports = exports = express.Router()
|
module.exports = exports = express.Router()
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
crypto = require 'crypto'
|
crypto = require 'crypto'
|
||||||
|
|
||||||
|
exports.rx =
|
||||||
|
username: /^[a-z][0-9a-z_]{2,23}$/
|
||||||
|
email: /^\w+([-+.]\w+)*@\w+([-+.]\w+)*$/
|
||||||
|
password: /^.+$/
|
||||||
|
domain: /(\*\.)?[A-Za-z0-9]+(\-[A-Za-z0-9]+)*(\.[A-Za-z0-9]+(\-[A-Za-z0-9]+)*)*/
|
||||||
|
filename: /[A-Za-z0-9_\-\.]+/
|
||||||
|
url: /^https?:\/\/[^\s;]*$/
|
||||||
|
|
||||||
exports.sha256 = (data) ->
|
exports.sha256 = (data) ->
|
||||||
if data
|
if data
|
||||||
return crypto.createHash('sha256').update(data).digest('hex')
|
return crypto.createHash('sha256').update(data).digest('hex')
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
service = require './service'
|
service = require './service'
|
||||||
monitor = require './monitor'
|
monitor = require './monitor'
|
||||||
|
|
||||||
|
{pluggable} = app
|
||||||
|
|
||||||
app.view_hook.menu_bar.push
|
app.view_hook.menu_bar.push
|
||||||
href: '/public/monitor/'
|
href: '/public/monitor/'
|
||||||
html: '服务器状态'
|
html: '服务器状态'
|
||||||
@@ -15,4 +17,11 @@ module.exports =
|
|||||||
widget: service.widget
|
widget: service.widget
|
||||||
style:'/style/panel.css'
|
style:'/style/panel.css'
|
||||||
|
|
||||||
|
pluggable.account.username_filter.push (account, callback) ->
|
||||||
|
monitor.loadPasswd (passwd_cache) ->
|
||||||
|
if req.body.username in _.values(passwd_cache)
|
||||||
|
return callback false
|
||||||
|
|
||||||
|
callback true
|
||||||
|
|
||||||
monitor.run()
|
monitor.run()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
child_process = require 'child_process'
|
child_process = require 'child_process'
|
||||||
|
|
||||||
service = require './service'
|
service = require './service'
|
||||||
{requireInService} = require '../../core/router/middleware'
|
{requireInService} = require '../../core/middleware'
|
||||||
|
|
||||||
mAccount = require '../../core/model/account'
|
mAccount = require '../../core/model/account'
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
crypto = require 'crypto'
|
crypto = require 'crypto'
|
||||||
|
|
||||||
{requireInService} = require '../../core/router/middleware'
|
{requireInService} = require '../../core/middleware'
|
||||||
|
|
||||||
mongodb = app.plugins.mongodb
|
mongodb = app.plugins.mongodb
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
mysql = require 'mysql'
|
mysql = require 'mysql'
|
||||||
|
|
||||||
plugin = require '../../core/pluggable'
|
plugin = require '../../core/pluggable'
|
||||||
{requireInService} = require '../../core/router/middleware'
|
{requireInService} = require '../../core/middleware'
|
||||||
|
|
||||||
connection = mysql.createConnection config.plugins.mysql.connection
|
connection = mysql.createConnection config.plugins.mysql.connection
|
||||||
connection.connect()
|
connection.connect()
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ child_process = require 'child_process'
|
|||||||
service = require './service'
|
service = require './service'
|
||||||
configure = require './configure'
|
configure = require './configure'
|
||||||
|
|
||||||
{requireInService, getParam} = require '../../core/router/middleware'
|
{requireInService, getParam} = require '../../core/middleware'
|
||||||
|
|
||||||
mAccount = require '../../core/model/account'
|
mAccount = require '../../core/model/account'
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
child_process = require 'child_process'
|
child_process = require 'child_process'
|
||||||
|
|
||||||
service = require './service'
|
service = require './service'
|
||||||
{requireInService} = require '../../core/router/middleware'
|
{requireInService} = require '../../core/middleware'
|
||||||
|
|
||||||
mAccount = require '../../core/model/account'
|
mAccount = require '../../core/model/account'
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
child_process = require 'child_process'
|
child_process = require 'child_process'
|
||||||
|
|
||||||
service = require './service'
|
service = require './service'
|
||||||
{requireInService} = require '../../core/router/middleware'
|
{requireInService} = require '../../core/middleware'
|
||||||
|
|
||||||
mAccount = require '../../core/model/account'
|
mAccount = require '../../core/model/account'
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{renderAccount} = require '../../core/router/middleware'
|
{renderAccount} = require '../../core/middleware'
|
||||||
|
|
||||||
module.exports = exports = express.Router()
|
module.exports = exports = express.Router()
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ fs = require 'fs'
|
|||||||
path = require 'path'
|
path = require 'path'
|
||||||
|
|
||||||
service = require './service'
|
service = require './service'
|
||||||
{renderAccount, requireInService, requireAuthenticate} = require '../../core/router/middleware'
|
{renderAccount, requireInService, requireAuthenticate} = require '../../core/middleware'
|
||||||
|
|
||||||
mAccount = require '../../core/model/account'
|
mAccount = require '../../core/model/account'
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
child_process = require 'child_process'
|
child_process = require 'child_process'
|
||||||
|
|
||||||
plugin = require '../../core/pluggable'
|
plugin = require '../../core/pluggable'
|
||||||
{requireInService} = require '../../core/router/middleware'
|
{requireInService} = require '../../core/middleware'
|
||||||
|
|
||||||
module.exports = exports = express.Router()
|
module.exports = exports = express.Router()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user