-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathauthorization-callback-route.js
More file actions
64 lines (56 loc) · 2.43 KB
/
authorization-callback-route.js
File metadata and controls
64 lines (56 loc) · 2.43 KB
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
/**
* Copyright 2017 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
import React from 'react'
import URI from "urijs"
import { navigate } from '@reach/router'
import { connect } from 'react-redux';
import { AbstractAuthorizationCallbackRoute } from "openstack-uicore-foundation/lib/components";
import { getUserProfile, addToSchedule, removeFromSchedule } from '../actions/user-actions'
import { IDP_BASE_URL, OAUTH2_CLIENT_ID, getEnvVariable } from '../utils/envVariables'
import HeroComponent from "../components/HeroComponent";
import { getPendingAction } from '../utils/schedule';
class AuthorizationCallbackRoute extends AbstractAuthorizationCallbackRoute {
constructor(props) {
super(getEnvVariable(IDP_BASE_URL), getEnvVariable(OAUTH2_CLIENT_ID), props);
}
_callback(backUrl) {
this.props.getUserInfo(
'groups, all_affiliations, candidate_profile, election_applications, election_nominations, election_nominations.candidate',
'election_nominations.candidate.first_name, election_nominations.candidate.last_name'
).then(() => this.props.getUserProfile().then(() => navigate(URI.decode(backUrl)))).then(() => {
const pendingAction = getPendingAction();
if (pendingAction) {
const { action, event } = pendingAction;
action === 'ADD_EVENT' ? this.props.addToSchedule(event) : this.props.removeFromSchedule(event);
}
});
}
_redirect2Error(error) {
console.log(`AuthorizationCallbackRoute::_redirect2Error error ${error}`);
navigate(`/a/error?error=${error}`);
return null
}
_render() {
return <HeroComponent title={'Checking Credentials ...'} />
}
}
const mapStateToProps = ({ loggedUserState }) => ({
accessToken: loggedUserState.accessToken,
idToken: loggedUserState.idToken,
sessionState: loggedUserState.sessionState,
})
export default connect(mapStateToProps, {
getUserProfile,
addToSchedule,
removeFromSchedule
})(AuthorizationCallbackRoute)