This commit is contained in:
jysperm
2014-03-15 21:00:39 +08:00
parent 63e8a2655c
commit 63142fb009
13 changed files with 49 additions and 49 deletions

View File

@@ -1,6 +1,6 @@
## User API
### POST /user/signup/
### POST /account/signup/
Request:
@@ -28,7 +28,7 @@ Exception:
* invalid_email `/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/`
* invalid_passwd `/^.+$/`
### POST /user/login/
### POST /account/login/
Request:
@@ -53,7 +53,7 @@ Exception:
* auth_failed
### POST /user/logout/
### POST /account/logout/
No Request.

View File

@@ -1,6 +1,6 @@
crypto = require 'crypto'
assert = require 'assert'
User = require './model/User'
User = require './model/Account'
exports.sha256 = (data) ->
if not data

View File

@@ -2,7 +2,7 @@ module.exports =
web:
port: 3000
user:
account:
cookieTime: 30 * 24 * 3600 * 1000
i18n:

View File

@@ -4,7 +4,7 @@
"description": "一个插件化的 Linux 虚拟主机管理系统。"
},
"word": {
"user": "用户",
"account": "帐号",
"signup": "注册",
"login": "登录",
"username": "用户名",

View File

@@ -3,9 +3,9 @@ auth = require '../auth'
db = require '../db'
_ = require 'underscore'
module.exports = class User extends Model
module.exports = class Account extends Model
@create: (data) ->
new User data
new Account data
@register: (username, email, passwd, callback = null) ->
passwd_salt = auth.randomSalt()
@@ -28,7 +28,7 @@ module.exports = class User extends Model
generateToken = (callback) ->
token = auth.randomSalt()
User.findOne
Account.findOne
'tokens.token': token
, (result) ->
if result
@@ -61,7 +61,7 @@ module.exports = class User extends Model
unless token
callback null
User.findOne
Account.findOne
'tokens.token': token
, (result) ->
if result

View File

@@ -1,18 +1,18 @@
config = require '../config'
User = require '../model/User'
Account = require '../model/Account'
module.exports =
get:
signup: (req, res) ->
User.authenticate req.token, (user) ->
Account.authenticate req.token, (account) ->
res.render 'signup',
user: user
user: account
login: (req, res) ->
User.authenticate req.token, (user) ->
Account.authenticate req.token, (account) ->
res.render 'login',
user: user
user: account
post:
signup: (req, res) ->
@@ -27,55 +27,55 @@ module.exports =
unless data.passwd or not /^.+$/.test data.passwd
return res.json 400, error: 'invalid_passwd'
User.byUsername data.username, (user) ->
if user
Account.byUsername data.username, (account) ->
if account
return res.json 400, error: 'username_exist'
User.byEmail data.email, (user) ->
if user
Account.byEmail data.email, (account) ->
if account
return res.json 400, error: 'email_exist'
User.register data.username, data.email, data.passwd, (user) ->
user.createToken {}, (token)->
Account.register data.username, data.email, data.passwd, (account) ->
account.createToken {}, (token)->
res.cookie 'token', token,
expires: new Date(Date.now() + config.user.cookieTime)
expires: new Date(Date.now() + config.account.cookieTime)
return res.json
id: user.data._id
id: account.data._id
login: (req, res) ->
data = req.body
# @param callback(account)
getAccount = (callback) ->
User.byUsername data.username, (user) ->
if user
return callback user
Account.byUsername data.username, (account) ->
if account
return callback account
User.byEmail data.email, (user) ->
return callback user
Account.byEmail data.email, (account) ->
return callback account
getAccount (user) ->
unless user
getAccount (account) ->
unless account
return res.json 400, error: 'auth_failed'
unless user.matchPasswd data.passwd
unless account.matchPasswd data.passwd
return res.json 400, error: 'auth_failed'
user.createToken {}, (token) ->
account.createToken {}, (token) ->
res.cookie 'token', token,
expires: new Date(Date.now() + config.user.cookieTime)
expires: new Date(Date.now() + config.account.cookieTime)
return res.json
id: user.data._id
id: account.data._id
token: token
logout: (req, res) ->
User.authenticate req.token, (user) ->
unless user
Account.authenticate req.token, (account) ->
unless account
return res.json 400, error: 'auth_failed'
user.removeToken req.token, ->
account.removeToken req.token, ->
res.clearCookie 'token'
res.json {}

View File

@@ -1,4 +1,4 @@
User = require '../model/User'
Account = require '../model/Account'
module.exports =
get:
@@ -6,6 +6,6 @@ module.exports =
res.redirect '/panel/'
'/panel/': (req, res) ->
User.authenticate req.token, (user) ->
Account.authenticate req.token, (account) ->
res.render 'panel',
user: user
account: account

View File

@@ -7,7 +7,7 @@ $ ->
$.ajax
method: 'post'
url: '/user/login/'
url: '/account/login/'
data: data
.done (reply) ->
location.href = '/'

View File

@@ -1,7 +1,7 @@
$ ->
$('.signup-form').find('button').on 'click', (e) ->
e.preventDefault()
$('.signup-form').checkAndRequest '/user/signup/',
$('.signup-form').checkAndRequest '/account/signup/',
username:
check: /^[0-9a-z_]+$/
error: '用户名必须以数字或小写字母开头'

View File

@@ -21,7 +21,7 @@ html
li
a(href='/topnav1/') Top Nav1
ul.nav.navbar-nav.navbar-right
if user
if account
li
a= user.data.username
li
@@ -30,9 +30,9 @@ html
a(href='/account/logout/')= t('word.logout')
else
li
a(href='/user/signup/')= t('word.signup')
a(href='/account/signup/')= t('word.signup')
li
a(href='/user/login/')= t('word.login')
a(href='/account/login/')= t('word.login')
#content.container
.row

View File

@@ -21,9 +21,9 @@ block main
prepend sidebar
.row
header= t('view.login.noAccount')
a.btn.btn-lg.btn-success(href='/user/signup/')= t('word.signup')
a.btn.btn-lg.btn-success(href='/account/signup/')= t('word.signup')
append script
script(src='/script/base/checkAndRequest.js')
script(src='/script/user/login.js')
script(src='/script/account/login.js')

View File

@@ -29,8 +29,8 @@ block main
prepend sidebar
.row
header= t('view.signup.alreadySignup')
a.btn.btn-lg.btn-success(href='/user/login/')= t('word.login')
a.btn.btn-lg.btn-success(href='/account/login/')= t('word.login')
append script
script(src='/script/base/checkAndRequest.js')
script(src='/script/user/signup.js')
script(src='/script/account/signup.js')