Small fix in token generation.

This commit is contained in:
Julien Fontanet
2014-09-22 13:55:08 +02:00
parent b330b55054
commit 05b1bffeef
2 changed files with 23 additions and 20 deletions

View File

@@ -1,6 +1,7 @@
{promisify: $promisify} = require 'bluebird'
$randomBytes = $promisify (require 'crypto').randomBytes
{exists: $fileExists, readFile: $readFile} = require 'fs'
$base64url = require 'base64url'
@@ -8,6 +9,11 @@ $base64url = require 'base64url'
$done = exports.$done = {}
exports.$fileExists = (path) ->
return new Promise (resolve) ->
$fileExists path, resolve
return
exports.$generateToken = (n = 32) -> ($randomBytes n).then $base64url
# Similar to `lodash.map()` for array and `lodash.mapValues()` for objects.
@@ -60,18 +66,7 @@ exports.$mapInPlace = (col, iterator, ctx) ->
return col
exports.$readFile = $promisify $readFile
# Wraps a value in a function.
exports.$wrap = (val) -> -> val
#=====================================================================
$fs = require 'fs'
$Promise = require 'bluebird'
exports.$fileExists = (path) ->
return new Promise (resolve) ->
$fs.exists path, resolve
return
exports.$readFile = $Promise.promisify $fs.readFile

View File

@@ -19,7 +19,8 @@ $Model = require './model'
$RedisCollection = require './collection/redis'
$spec = require './spec'
$XAPI = require './xapi'
{$coroutine, $fiberize, $generateToken, $wait} = require './fibers-utils'
{$coroutine, $fiberize, $wait} = require './fibers-utils'
{$generateToken} = require './utils'
{$MappedCollection} = require './MappedCollection'
#=====================================================================
@@ -35,10 +36,11 @@ class $Servers extends $RedisCollection
class $Token extends $Model
@generate: (userId) ->
new $Token {
id: $generateToken()
user_id: userId
}
return $generateToken().then (token) ->
return new $Token {
id: token
user_id: userId
}
validate: -> # TODO
@@ -46,7 +48,8 @@ class $Tokens extends $RedisCollection
model: $Token
generate: (userId) ->
@add $Token.generate userId
return ($Token.generate userId).then (token) =>
return @add token
#---------------------------------------------------------------------
@@ -57,10 +60,14 @@ class $User extends $Model
validate: -> # TODO
# FIXME: Async function should be explicit and return promise.
setPassword: (password) ->
@set 'pw_hash', $wait $hash password
return
# Checks the password and updates the hash if necessary.
#
# FIXME: Async function should be explicit and return promise.
checkPassword: (password) ->
hash = @get 'pw_hash'
@@ -70,7 +77,7 @@ class $User extends $Model
if $needsRehash hash
@setPassword password
true
return true
hasPermission: (permission) ->
perms = {
@@ -85,6 +92,7 @@ class $User extends $Model
class $Users extends $RedisCollection
model: $User
# FIXME: Async function should be explicit and return promise.
create: (email, password, permission) ->
user = new $User {
email: email