Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/deep-resource/lib/Resource/LambdaResponse.js
Original file line number Diff line number Diff line change
Expand Up @@ -118,14 +118,14 @@ export class LambdaResponse extends Response {
let decodedPayload = null;

if (this._rawData) {
if (this._rawData.hasOwnProperty('Payload')) {
if (this._rawData.Payload) {
decodedPayload = LambdaResponse._decodePayloadObject(this._rawData.Payload);

// treat the case when error is stored in payload (nested)
if (decodedPayload.hasOwnProperty('errorMessage')) {
decodedPayload = LambdaResponse._decodeRawErrorObject(decodedPayload.errorMessage);
}
} else if(this._rawData.hasOwnProperty('errorMessage')) {
} else if (this._rawData.errorMessage) {
decodedPayload = LambdaResponse._decodeRawErrorObject(this._rawData.errorMessage);
}
}
Expand Down
8 changes: 8 additions & 0 deletions src/deep-resource/lib/Resource/LocalRequest.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,20 @@ export class LocalRequest extends Request {
*/
_send(callback = () => {}) {
let actionType = this._action.type;
let securityService = this._action.resource.security;

if (actionType === Action.LAMBDA) {
let data = {
lambda: this._action.source.original,
payload: this.payload,
method: this._method,
context: {
identity: {
cognitoIdentityPoolId: securityService.token ? securityService.token.identityPoolId : null,
cognitoIdentityId: securityService.token ? securityService.token.identityId : null,
isAnonymous: securityService.token ? securityService.token.isAnonymous : true,
},
},
};

if (typeof window === 'undefined') {
Expand Down
25 changes: 25 additions & 0 deletions src/deep-security/lib/LocalIdentityProvider.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/**
* Created by mgoria on 27/04/15.
*/

'use strict';

import {IdentityProvider} from './IdentityProvider';

export class LocalIdentityProvider extends IdentityProvider {
/**
* @param args
*/
constructor(...args) {
super(...args);
}

/**
* @param providerName
* @param providers
* @returns {*}
*/
getProviderDomain(providerName, providers) {
return super.getProviderDomain(providerName, providers) || providerName;
}
}
18 changes: 18 additions & 0 deletions src/deep-security/lib/LocalToken.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,24 @@ export class LocalToken extends Token {
callback(null, this._credentials);
}

/**
* @returns {Boolean}
*/
get isAnonymous() {
if (this.lambdaContext) {
return this.lambdaContext.identity.isAnonymous;
} else {
return !this.identityProvider;
}
}

/**
* @param {Function} callback
*/
getUser(callback) {
this._loadUser(callback);
}

/**
* 'Reset' credentials
*/
Expand Down
6 changes: 4 additions & 2 deletions src/deep-security/lib/Security.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {Token} from './Token';
import {LocalToken} from './LocalToken';
import {UserProvider} from './UserProvider';
import {IdentityProvider} from './IdentityProvider';
import {LocalIdentityProvider} from './LocalIdentityProvider';
import util from 'util';
import crypto from 'crypto';

Expand Down Expand Up @@ -82,14 +83,15 @@ export class Security extends Kernel.ContainerAware {
* @returns {Token}
*/
login(providerName, identityMetadata, callback) {
let identityProvider = null;
let TokenImplementation = LocalToken;
let IdentityProviderImplementation = LocalIdentityProvider;

if (!this._localBackend) {
TokenImplementation = Token;
identityProvider = new IdentityProvider(this._identityProviders, providerName, identityMetadata);
IdentityProviderImplementation = IdentityProvider;
}

let identityProvider = new IdentityProviderImplementation(this._identityProviders, providerName, identityMetadata);
this._token = TokenImplementation.createFromIdentityProvider(this._identityPoolId, identityProvider);

this._token.userProvider = this.userProvider;
Expand Down
7 changes: 7 additions & 0 deletions src/deep-security/lib/Token.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,13 @@ export class Token {
return this._identityProvider;
}

/**
* @returns {String}
*/
get identityPoolId() {
return this._identityPoolId;
}

/**
* @param {IdentityProvider} provider
*/
Expand Down