-
Notifications
You must be signed in to change notification settings - Fork 606
/
devise.js
66 lines (56 loc) · 2.12 KB
/
devise.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import { isEmpty } from '@ember/utils';
import BaseAuthorizer from './base';
/**
Authorizer that works with the Ruby gem
[devise](https://github.com/plataformatec/devise); includes the user's token
and identification from the session data in the `Authorization` HTTP header,
e.g.,
```
Authorization: token="234rtgjneroigne4" email="user@domain.tld"
```
__As token authentication is not actually part of devise anymore, the server
needs to implement some customizations__ to work with this authenticator -
see [this gist](https://gist.github.com/josevalim/fb706b1e933ef01e4fb6).
@class DeviseAuthorizer
@module ember-simple-auth/authorizers/devise
@extends BaseAuthorizer
@public
*/
export default BaseAuthorizer.extend({
/**
The token attribute name.
@property tokenAttributeName
@type String
@default 'token'
@public
*/
tokenAttributeName: 'token',
/**
The identification attribute name.
@property identificationAttributeName
@type String
@default 'email'
@public
*/
identificationAttributeName: 'email',
/**
Includes the user's token (see
{{#crossLink "DeviseAuthenticator/tokenAttributeName:property"}}{{/crossLink}})
and identification (see
{{#crossLink "DeviseAuthenticator/identificationAttributeName:property"}}{{/crossLink}})
in the `Authorization` header.
@method authorize
@param {Object} data The data that the session currently holds
@param {Function} block(headerName,headerContent) The callback to call with the authorization data; will receive the header name and header content as arguments.
@public
*/
authorize(data, block) {
const { tokenAttributeName, identificationAttributeName } = this.getProperties('tokenAttributeName', 'identificationAttributeName');
const userToken = data[tokenAttributeName];
const userIdentification = data[identificationAttributeName];
if (!isEmpty(userToken) && !isEmpty(userIdentification)) {
const authData = `${tokenAttributeName}="${userToken}", ${identificationAttributeName}="${userIdentification}"`;
block('Authorization', `Token ${authData}`);
}
}
});