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