UNPKG

1.22 kBtext/coffeescriptView Raw
1class MeshbluAuthParser
2 parse: (request) =>
3 authPair = @parseBasicAuth request
4 authPair ?= @parseMeshbluAuthHeaders request
5 authPair ?= @parseSkynetAuthHeaders request
6 authPair ?= @parseExtraHeaders request
7 authPair ?= {uuid: undefined, token: undefined}
8 return authPair
9
10 parseBasicAuth: (request) =>
11 return unless request.header 'authorization'
12 [scheme,encodedToken] = request.header('authorization').split(' ')
13 [uuid,token] = new Buffer(encodedToken, 'base64').toString().split(':')
14
15 return {
16 uuid: uuid.trim?()
17 token: token.trim?()
18 }
19
20 parseMeshbluAuthHeaders: (request) =>
21 return @parseHeader request, 'meshblu_auth_uuid', 'meshblu_auth_token'
22
23 parseSkynetAuthHeaders: (request) =>
24 return @parseHeader request, 'skynet_auth_uuid', 'skynet_auth_token'
25
26 parseExtraHeaders: (request) =>
27 return @parseHeader request, 'X-Meshblu-UUID', 'X-Meshblu-Token'
28
29 parseHeader: (request, uuidHeader, tokenHeader) =>
30 return unless request.header(uuidHeader) and request.header(tokenHeader)
31 uuid = request.header(uuidHeader).trim()
32 token = request.header(tokenHeader).trim()
33 return {uuid, token}
34
35module.exports = MeshbluAuthParser