Browse Source

preparation for login api

Skylsmoi 6 years ago
parent
commit
703567e8b7

+ 4 - 1
jsonserver/server.js View File

@@ -47,7 +47,10 @@ server.post('/user/login', (req, res) => {
47 47
 
48 48
 server.get('/app/config', (req, res) => res.jsonp(jsonDb.app_config))
49 49
 
50
-server.get('/user/is_logged_in', (req, res) => res.jsonp(jsonDb.user_logged))
50
+server.get('/user/is_logged_in', (req, res) =>
51
+  // res.jsonp({"logged": false})
52
+  res.jsonp(jsonDb.user_logged)
53
+)
51 54
 
52 55
 server.get('/user/:id/workspace', (req, res) => res.jsonp(jsonDb.workspace_list))
53 56
 

+ 1 - 1
src/action-creator.sync.js View File

@@ -5,7 +5,7 @@ export const USER_LOGIN = 'User/Login'
5 5
 export const USER_DATA = 'User/Data'
6 6
 export const USER_ROLE = 'User/Role'
7 7
 export const USER_CONNECTED = 'User/Connected'
8
-export const setUserConnected = user => ({ type: `Set/${USER_CONNECTED}`, user })
8
+export const setUserConnected = data => ({ type: `Set/${USER_CONNECTED}`, data })
9 9
 export const updateUserData = userData => ({ type: `Update/${USER_DATA}`, data: userData })
10 10
 export const setUserRole = userRole => ({ type: `Set/${USER_ROLE}`, userRole }) // this actually update workspaceList state
11 11
 export const updateUserWorkspaceSubscriptionNotif = (workspaceId, subscriptionNotif) =>

+ 1 - 1
src/component/Workspace/Folder.jsx View File

@@ -80,7 +80,7 @@ class Folder extends React.Component {
80 80
               type={c.type}
81 81
               status={c.status}
82 82
               onClickItem={() => onClickItem(c)}
83
-              isLast={isLast && i === content.length - 1}
83
+              isLast={isLast && i === folderData.content.length - 1}
84 84
               key={c.id}
85 85
             />
86 86
           )}

+ 4 - 1
src/component/common/Card/CardHeader.jsx View File

@@ -13,7 +13,10 @@ const CardHeader = props => {
13 13
 export default CardHeader
14 14
 
15 15
 CardHeader.propTypes = {
16
-  children: PropTypes.element.isRequired,
16
+  children: PropTypes.oneOfType([
17
+    PropTypes.element,
18
+    PropTypes.string
19
+  ]).isRequired,
17 20
   customClass: PropTypes.string
18 21
 }
19 22
 

+ 47 - 45
src/container/Login.jsx View File

@@ -50,54 +50,56 @@ class Login extends React.Component {
50 50
                   <CardHeader customClass='connection__header text-center'>{'Connexion'}</CardHeader>
51 51
 
52 52
                   <CardBody formClass='connection__form'>
53
-                    <InputGroupText
54
-                      parentClassName='connection__form__groupemail'
55
-                      customClass='mb-3 mt-4'
56
-                      icon='fa-envelope-open-o'
57
-                      type='email'
58
-                      placeHolder='Adresse Email'
59
-                      invalidMsg='Email invalide.'
60
-                      value={this.state.inputLogin}
61
-                      onChange={this.handleChangeLogin}
62
-                    />
63
-
64
-                    <InputGroupText
65
-                      parentClassName='connection__form__groupepw'
66
-                      customClass=''
67
-                      icon='fa-lock'
68
-                      type='password'
69
-                      placeHolder='Mot de passe'
70
-                      invalidMsg='Mot de passe invalide.'
71
-                      value={this.state.inputPassword}
72
-                      onChange={this.handleChangePassword}
73
-                    />
74
-
75
-                    <div className='row mt-4 mb-4'>
76
-                      <div className='col-12 col-sm-6 col-md-6 col-lg-6 col-xl-6'>
77
-                        <InputCheckbox
78
-                          parentClassName='connection__form__rememberme'
79
-                          customClass=''
80
-                          label='Se souvenir de moi'
81
-                          checked={this.state.inputRememberMe}
82
-                          onChange={this.handleChangeRememberMe}
83
-                        />
53
+                    <div>
54
+                      <InputGroupText
55
+                        parentClassName='connection__form__groupemail'
56
+                        customClass='mb-3 mt-4'
57
+                        icon='fa-envelope-open-o'
58
+                        type='email'
59
+                        placeHolder='Adresse Email'
60
+                        invalidMsg='Email invalide.'
61
+                        value={this.state.inputLogin}
62
+                        onChange={this.handleChangeLogin}
63
+                      />
64
+
65
+                      <InputGroupText
66
+                        parentClassName='connection__form__groupepw'
67
+                        customClass=''
68
+                        icon='fa-lock'
69
+                        type='password'
70
+                        placeHolder='Mot de passe'
71
+                        invalidMsg='Mot de passe invalide.'
72
+                        value={this.state.inputPassword}
73
+                        onChange={this.handleChangePassword}
74
+                      />
75
+
76
+                      <div className='row mt-4 mb-4'>
77
+                        <div className='col-12 col-sm-6 col-md-6 col-lg-6 col-xl-6'>
78
+                          <InputCheckbox
79
+                            parentClassName='connection__form__rememberme'
80
+                            customClass=''
81
+                            label='Se souvenir de moi'
82
+                            checked={this.state.inputRememberMe}
83
+                            onChange={this.handleChangeRememberMe}
84
+                          />
85
+                        </div>
86
+
87
+                        <div className='col-12 col-sm-6 col-md-6 col-lg-6 col-xl-6 text-sm-right'>
88
+                          <LoginBtnForgotPw
89
+                            customClass='connection__form__pwforgot'
90
+                            label='Mot de passe oublié ?'
91
+                          />
92
+                        </div>
84 93
                       </div>
85 94
 
86
-                      <div className='col-12 col-sm-6 col-md-6 col-lg-6 col-xl-6 text-sm-right'>
87
-                        <LoginBtnForgotPw
88
-                          customClass='connection__form__pwforgot'
89
-                          label='Mot de passe oublié ?'
90
-                        />
91
-                      </div>
95
+                      <Button
96
+                        htmlType='button'
97
+                        bootstrapType='primary'
98
+                        customClass='connection__form__btnsubmit'
99
+                        label='Connexion'
100
+                        onClick={this.handleClickSubmit}
101
+                      />
92 102
                     </div>
93
-
94
-                    <Button
95
-                      htmlType='button'
96
-                      bootstrapType='primary'
97
-                      customClass='connection__form__btnsubmit'
98
-                      label='Connexion'
99
-                      onClick={this.handleClickSubmit}
100
-                    />
101 103
                   </CardBody>
102 104
                 </Card>
103 105
 

+ 8 - 4
src/reducer/user.js View File

@@ -17,18 +17,22 @@ const serializeUser = data => ({
17 17
   caldavUrl: data.user.caldav_url
18 18
 })
19 19
 
20
-export default function user (state = {
20
+const defaultUser = {
21 21
   id: -1,
22
-  isLoggedIn: undefined,
22
+  isLoggedIn: undefined, // undefined means the api (/is_logged_in) has not responded yet
23 23
   username: '',
24 24
   firstname: '',
25 25
   lastname: '',
26 26
   email: '',
27 27
   avatar: ''
28
-}, action) {
28
+}
29
+
30
+export default function user (state = defaultUser, action) {
29 31
   switch (action.type) {
30 32
     case `Set/${USER_CONNECTED}`:
31
-      return serializeUser(action.user)
33
+      return action.data.logged
34
+        ? serializeUser(action.data)
35
+        : {...defaultUser, isLoggedIn: false}
32 36
 
33 37
     case `Update/${USER_DATA}`:
34 38
       return {...state, ...action.data}