1
1
import angular from 'angular'
2
+ import { getCurrentUser , loadUser } from '../../services/userv3.service.js'
2
3
3
4
( function ( ) {
4
5
'use strict'
@@ -10,122 +11,25 @@ import angular from 'angular'
10
11
function LoginController ( logger , $state , $stateParams , $location , $scope , TcAuthService , UserService , Helpers , CONSTANTS ) {
11
12
var vm = this
12
13
vm . $stateParams = $stateParams
13
- vm . passwordReset = false
14
- vm . loginErrors = {
15
- USERNAME_NONEXISTANT : false ,
16
- WRONG_PASSWORD : false ,
17
- SOCIAL_LOGIN_ERROR : false
18
- }
19
-
20
- vm . login = login
21
- vm . socialLogin = socialLogin
22
-
23
- // reference for main vm
24
- var mainVm = $scope . $parent . main
25
14
26
15
activate ( )
27
16
28
- function activate ( ) { }
29
-
30
- function login ( ) {
31
- vm . loginErrors . USERNAME_NONEXISTANT = false
32
- vm . loginErrors . WRONG_PASSWORD = false
33
-
34
- // TODO ideally it should be done by dedicated directive to handle all outside clicks
35
- mainVm . menuVisible = false
36
-
37
- if ( Helpers . isEmail ( vm . username ) ) {
38
- // the user is loggin in using email
39
- vm . emailOrUsername = 'email'
40
-
41
- // ensure email exists
42
- // uses same validity check as registration
43
- // valid => email isn't already used by someone
44
- UserService . validateUserEmail ( vm . username ) . then ( function ( data ) {
45
- if ( data . valid ) {
46
- // email doesn't exist
47
- vm . loginErrors . USERNAME_NONEXISTANT = true
48
- } else {
49
- _doLogin ( vm . username , vm . currentPassword )
50
- }
51
- } ) . catch ( function ( resp ) {
52
- // TODO handle error
53
- // assume email exists, login would in any case if it didn't
54
- vm . loginErrors . USERNAME_NONEXISTANT = false
55
- _doLogin ( vm . username , vm . currentPassword )
56
- } )
57
- } else {
58
- // the user is logging in using a username
59
- vm . emailOrUsername = 'username'
60
-
61
- // username - make sure it exists
62
- UserService . validateUserHandle ( vm . username ) . then ( function ( data ) {
63
- if ( data . valid ) {
64
- // username doesn't exist
65
- vm . loginErrors . USERNAME_NONEXISTANT = true
66
- } else {
67
- _doLogin ( vm . username , vm . currentPassword )
68
- }
69
- } ) . catch ( function ( resp ) {
70
- // TODO handle error
71
- // assume email exists, login would in any case if it didn't
72
- _doLogin ( vm . username , vm . currentPassword )
73
- } )
74
- }
75
- }
76
-
77
- function _doLogin ( usernameOrEmail , password ) {
78
- return TcAuthService . login ( usernameOrEmail , password )
79
- . then ( function ( data ) {
80
- // setup login event for analytics tracking
81
- Helpers . setupLoginEventMetrics ( usernameOrEmail )
17
+ function activate ( ) {
18
+ var currentUser = getCurrentUser ( )
19
+ if ( ! currentUser ) {
20
+ loadUser ( ) . then ( function ( token ) {
21
+ logger . debug ( 'successful login with token ' + JSON . stringify ( token ) )
22
+ $rootScope . $broadcast ( CONSTANTS . EVENT_USER_LOGGED_IN )
82
23
return Helpers . redirectPostLogin ( $stateParams . next )
83
-
84
- } )
85
- . catch ( function ( err ) {
86
- logger . warning ( err )
87
-
88
- switch ( err . status ) {
89
- case 'ACCOUNT_INACTIVE' :
90
- $state . go ( 'registeredSuccessfully' )
91
- // user should already be redirected
92
- break
93
- case 'UNKNOWN_ERROR' :
94
- default :
95
- vm . loginErrors . WRONG_PASSWORD = true
96
- vm . password = ''
97
- logger . error ( 'Error logging in: ' , err )
98
- }
24
+ } , function ( ) {
25
+ logger . debug ( 'State requires authentication, and user is not logged in, redirecting' )
26
+ // setup redirect for post login
27
+ event . preventDefault ( )
28
+ var next = $state . href ( toState . name , toParams , { absolute : true } )
29
+ var retUrl = next
30
+ $window . location = CONSTANTS . ACCOUNTS_APP_URL + '?retUrl=' + encodeURIComponent ( retUrl )
99
31
} )
100
- }
101
-
102
- function socialLogin ( platform ) {
103
- // we need to pass on the 'next' param if we have one
104
- var params = { }
105
- if ( $stateParams . next ) {
106
- params = { next : $stateParams . next }
107
32
}
108
-
109
- // redirect back to login
110
- var callbackUrl = $state . href ( 'login' , params , { absolute : true } )
111
-
112
- TcAuthService . socialLogin ( platform , callbackUrl )
113
- . then ( function ( ) {
114
- logger . debug ( 'logged in' )
115
- return Helpers . redirectPostLogin ( $stateParams . next )
116
- } )
117
- . catch ( function ( err ) {
118
- /*eslint no-fallthrough:0*/
119
- switch ( err . status ) {
120
- case 'ACCOUNT_INACTIVE' :
121
- window . location . href = 'https://www.' + CONSTANTS . domain + '/account-inactive/'
122
- case 'USER_NOT_REGISTERED' :
123
- default :
124
- vm . socialLoginError = 401
125
- vm . loginErrors . SOCIAL_LOGIN_ERROR = true
126
- logger . error ( 'Error logging in with social account' , err )
127
- }
128
- } )
129
33
}
130
34
}
131
35
0 commit comments