|
1 | 1 | import Route from '@ember/routing/route'; |
2 | 2 |
|
3 | 3 | export default Route.extend({ |
4 | | - beforeModel(transition) { |
| 4 | + async routingModel(payload, user, transition) { |
| 5 | + try { |
| 6 | + if (this.authManager.currentUser.email === user.email) { |
| 7 | + let invite = await this.loader.post('/role_invites/accept-invite', payload); |
| 8 | + if (invite.role === 'organiser' || invite.role === 'coorganizer') { |
| 9 | + this.transitionTo('events.view', invite.event); |
| 10 | + } else { |
| 11 | + this.transitionTo('public', invite.event); |
| 12 | + } |
| 13 | + } else { |
| 14 | + this.set('session.skipRedirectOnInvalidation', true); |
| 15 | + this.session.invalidate(); |
| 16 | + this.transitionTo('register', { |
| 17 | + queryParams: { |
| 18 | + event : `${transition.resolvedModels.public.originalId}`, |
| 19 | + inviteToken : `${transition.to.queryParams.token}`, |
| 20 | + inviteEmail : `${user.email}` |
| 21 | + } |
| 22 | + }); |
| 23 | + } |
| 24 | + } catch (e) { |
| 25 | + this.notify.error(this.l10n.t('An unexpected error has occurred')); |
| 26 | + console.warn(e); |
| 27 | + } |
| 28 | + }, |
| 29 | + async beforeModel(transition) { |
5 | 30 | let payload = { |
6 | 31 | data: { |
7 | | - token: transition.queryParams.token |
| 32 | + token: transition.to.queryParams.token |
8 | 33 | } |
9 | 34 | }; |
10 | | - this.loader |
11 | | - .post('/role_invites/user', payload) |
12 | | - .then(user => { |
13 | | - if (this.get('session.isAuthenticated')) { |
14 | | - if (this.get('authManager.currentUser.email') === user.email) { |
15 | | - this.loader |
16 | | - .post('/role_invites/accept-invite', payload) |
17 | | - .then(invite => { |
18 | | - this.transitionTo('events.view', invite.event); |
19 | | - }) |
20 | | - .catch(e => { |
21 | | - this.notify.error(this.l10n.t('An unexpected error has occurred')); |
22 | | - console.warn(e); |
23 | | - }); |
24 | | - } else { |
25 | | - this.set('session.skipRedirectOnInvalidation', true); |
26 | | - this.session.invalidate(); |
27 | | - this.transitionTo('register', { |
28 | | - queryParams: { |
29 | | - event : `${transition.params.public.event_id}`, |
30 | | - inviteToken : `${transition.queryParams.token}`, |
31 | | - inviteEmail : `${user.email}` |
32 | | - } |
33 | | - }); |
34 | | - |
| 35 | + try { |
| 36 | + let user = await this.loader.post('/role_invites/user', payload); |
| 37 | + if (this.session.isAuthenticated) { |
| 38 | + this.routingModel(payload, user); |
| 39 | + } else { |
| 40 | + this.transitionTo('register', { |
| 41 | + queryParams: { |
| 42 | + event : `${transition.resolvedModels.public.originalId}`, |
| 43 | + inviteToken : `${transition.to.queryParams.token}`, |
| 44 | + inviteEmail : `${user.email}` |
35 | 45 | } |
36 | | - } else { |
37 | | - this.transitionTo('register', { |
38 | | - queryParams: { |
39 | | - event : `${transition.params.public.event_id}`, |
40 | | - inviteToken : `${transition.queryParams.token}`, |
41 | | - inviteEmail : `${user.email}` |
42 | | - } |
43 | | - }); |
44 | | - } |
45 | | - }) |
46 | | - .catch(e => { |
47 | | - this.notify.error(this.l10n.t('An unexpected error has occurred')); |
48 | | - console.warn(e); |
49 | | - }); |
| 46 | + }); |
| 47 | + } |
| 48 | + } catch (e) { |
| 49 | + this.notify.error(this.l10n.t('An unexpected error has occurred')); |
| 50 | + console.warn(e); |
| 51 | + } |
50 | 52 | } |
51 | 53 | }); |
0 commit comments