@@ -11,41 +11,52 @@ const credentials = new AwsCredentials(config.aws);
1111
1212const ResponseObj = require ( './../response' ) ;
1313
14- router . all ( '/' , ( req , res ) => {
15- const sts = new Aws . STS ( ) ;
16- const session = req . session . passport ;
14+ module . exports = ( app ) => {
15+ router . all ( '/' , ( req , res ) => {
16+ const sts = new Aws . STS ( ) ;
17+ const session = req . session . passport ;
1718
18- const refreshResponseObj = Object . assign ( ResponseObj , {
19- accountId : session . accountId
20- } ) ;
21-
22- sts . assumeRoleWithSAML ( {
23- PrincipalArn : session . principalArn ,
24- RoleArn : session . roleArn ,
25- SAMLAssertion : session . samlResponse ,
26- DurationSeconds : config . aws . duration
27- } , ( assumeRoleErr , data ) => {
28- if ( assumeRoleErr ) {
29- res . redirect ( config . auth . entryPoint ) ;
30- return ;
31- }
32-
33- const credentialResponseObj = Object . assign ( refreshResponseObj , {
34- accessKey : data . Credentials . AccessKeyId ,
35- secretKey : data . Credentials . SecretAccessKey ,
36- sessionToken : data . Credentials . SessionToken
19+ const refreshResponseObj = Object . assign ( ResponseObj , {
20+ accountId : session . accountId
3721 } ) ;
3822
39- res . render ( 'refresh' , credentialResponseObj ) ;
23+ sts . assumeRoleWithSAML ( {
24+ PrincipalArn : session . principalArn ,
25+ RoleArn : session . roleArn ,
26+ SAMLAssertion : session . samlResponse ,
27+ DurationSeconds : config . aws . duration
28+ } , ( assumeRoleErr , data ) => {
29+ if ( assumeRoleErr ) {
30+ res . redirect ( config . auth . entryPoint ) ;
31+ return ;
32+ }
33+
34+ const credentialResponseObj = Object . assign ( refreshResponseObj , {
35+ accessKey : data . Credentials . AccessKeyId ,
36+ secretKey : data . Credentials . SecretAccessKey ,
37+ sessionToken : data . Credentials . SessionToken
38+ } ) ;
39+
40+ const profileName = `awsaml-${ session . accountId } ` ;
41+ const metadataUrl = app . get ( 'metadataUrl' ) ;
42+ let metadataUrls = Storage . get ( 'metadataUrls' ) ;
4043
41- credentials . save ( data . Credentials , `awsaml-${ session . accountId } ` , ( credSaveErr ) => {
42- if ( credSaveErr ) {
43- res . render ( 'refresh' , Object . assign ( credentialResponseObj , {
44- error : credSaveErr
45- } ) ) ;
44+ // If the stored metadataUrl label value is the same as the URL default to the profile name!
45+ if ( metadataUrls [ metadataUrl ] === metadataUrl ) {
46+ metadataUrls [ metadataUrl ] = profileName ;
47+ Storage . set ( 'metadataUrls' , metadataUrls ) ;
4648 }
49+ res . render ( 'refresh' , credentialResponseObj ) ;
50+
51+ credentials . save ( data . Credentials , profileName , ( credSaveErr ) => {
52+ if ( credSaveErr ) {
53+ res . render ( 'refresh' , Object . assign ( credentialResponseObj , {
54+ error : credSaveErr
55+ } ) ) ;
56+ }
57+ } ) ;
4758 } ) ;
4859 } ) ;
49- } ) ;
5060
51- module . exports = router ;
61+ return router ;
62+ } ;
0 commit comments