[Pharo] Personal fitness tracker web app.
Login, register, logout component.
Changed files
src/MyFitnessTracker/MFTLoginAndRegisterComponent.class.st
@@ -1,173 +0,0 @@
1
Removed:
Class {
2
Removed:
#name : #MFTLoginAndRegisterComponent,
3
Removed:
#superclass : #SBSComponent,
4
Removed:
#instVars : [
5
Removed:
'user'
6
Removed:
],
7
Removed:
#category : #'MyFitnessTracker-Components'
8
Removed:
}
9
Removed:
10
Removed:
{ #category : #initialization }
11
Removed:
MFTLoginAndRegisterComponent >> initialize [
12
Removed:
13
Removed:
super initialize.
14
Removed:
user := MFTUser new
15
Removed:
]
16
Removed:
17
Removed:
{ #category : #rendering }
18
Removed:
MFTLoginAndRegisterComponent >> renderContentOn: html [
19
Removed:
"MFTUser isLoggedIn"
20
Removed:
21
Removed:
self session user
22
Removed:
ifNil: [ self renderLoginAndRegisterModalsOn: html ]
23
Removed:
ifNotNil: [ self renderLogoutButtonOn: html ]
24
Removed:
]
25
Removed:
26
Removed:
{ #category : #rendering }
27
Removed:
MFTLoginAndRegisterComponent >> renderLoginAndRegisterModalsOn: html [
28
Removed:
"Logging in and registering display modal components; they are not in a form."
29
Removed:
30
Removed:
html buttonGroup: [
31
Removed:
html formButton
32
Removed:
beSecondary;
33
Removed:
beSmall;
34
Removed:
dataToggle: 'modal';
35
Removed:
dataTarget: '#loginModal';
36
Removed:
with: 'Login'.
37
Removed:
html formButton
38
Removed:
bePrimary;
39
Removed:
beSmall;
40
Removed:
dataToggle: 'modal';
41
Removed:
dataTarget: '#registerModal';
42
Removed:
with: 'Register' ].
43
Removed:
self renderLoginModalOn: html.
44
Removed:
self renderRegisterModalOn: html
45
Removed:
]
46
Removed:
47
Removed:
{ #category : #rendering }
48
Removed:
MFTLoginAndRegisterComponent >> renderLoginModalBodyOn: html [
49
Removed:
50
Removed:
html modalBody with: [
51
Removed:
html text: 'Welcome!'.
52
Removed:
html formGroup: [
53
Removed:
html label: 'Username'.
54
Removed:
html textInput formControl callback: [ :value |
55
Removed:
user username: value ] ].
56
Removed:
html formGroup: [
57
Removed:
html label: 'Password'.
58
Removed:
html passwordInput formControl callback: [ :value |
59
Removed:
user passwordHash: value ] ] ]
60
Removed:
]
61
Removed:
62
Removed:
{ #category : #rendering }
63
Removed:
MFTLoginAndRegisterComponent >> renderLoginModalFooterOn: html [
64
Removed:
65
Removed:
html modalFooter: [
66
Removed:
html formButton
67
Removed:
beSecondary;
68
Removed:
dataDismiss: 'modal';
69
Removed:
with: 'Cancel'.
70
Removed:
html formButton
71
Removed:
bePrimary;
72
Removed:
callback: [ MFTUser tryLoginUser: user ];
73
Removed:
with: 'Login' ]
74
Removed:
]
75
Removed:
76
Removed:
{ #category : #rendering }
77
Removed:
MFTLoginAndRegisterComponent >> renderLoginModalHeaderOn: html [
78
Removed:
79
Removed:
html modalHeader: [
80
Removed:
html modalTitle
81
Removed:
level5;
82
Removed:
with: 'Login'.
83
Removed:
html modalCloseButton ]
84
Removed:
]
85
Removed:
86
Removed:
{ #category : #rendering }
87
Removed:
MFTLoginAndRegisterComponent >> renderLoginModalOn: html [
88
Removed:
89
Removed:
html modal
90
Removed:
id: 'loginModal';
91
Removed:
fade;
92
Removed:
with: [
93
Removed:
html modalDialog
94
Removed:
beCentered;
95
Removed:
with: [
96
Removed:
html modalContent: [
97
Removed:
html form: [
98
Removed:
self renderLoginModalHeaderOn: html.
99
Removed:
self renderLoginModalBodyOn: html.
100
Removed:
self renderLoginModalFooterOn: html ] ] ] ]
101
Removed:
]
102
Removed:
103
Removed:
{ #category : #rendering }
104
Removed:
MFTLoginAndRegisterComponent >> renderLogoutButtonOn: html [
105
Removed:
"Logging out is an action; the button is in a form."
106
Removed:
107
Removed:
html form: [
108
Removed:
html formButton
109
Removed:
beSecondary;
110
Removed:
beSmall;
111
Removed:
callback: [ MFTUser logout ];
112
Removed:
with: 'Logout' ]
113
Removed:
]
114
Removed:
115
Removed:
{ #category : #rendering }
116
Removed:
MFTLoginAndRegisterComponent >> renderRegisterModalBodyOn: html [
117
Removed:
118
Removed:
html modalBody with: [
119
Removed:
html text: 'Welcome!'.
120
Removed:
html formGroup: [
121
Removed:
html label: 'Username'.
122
Removed:
html textInput formControl callback: [ :value |
123
Removed:
user username: value ] ].
124
Removed:
html formGroup: [
125
Removed:
html label: 'Password'.
126
Removed:
html passwordInput formControl callback: [ :value |
127
Removed:
user passwordHash: (SHA256 new hashMessage: value) asString ] ].
128
Removed:
html formGroup: [
129
Removed:
html label: 'Date of Birth'.
130
Removed:
html dateInput5 formControl callback: [ :date |
131
Removed:
user dateOfBirth: (Date fromString: date) ] ] ]
132
Removed:
]
133
Removed:
134
Removed:
{ #category : #rendering }
135
Removed:
MFTLoginAndRegisterComponent >> renderRegisterModalFooterOn: html [
136
Removed:
137
Removed:
html modalFooter: [
138
Removed:
html formButton
139
Removed:
beSecondary;
140
Removed:
dataDismiss: 'modal';
141
Removed:
with: 'Cancel'.
142
Removed:
html formButton
143
Removed:
bePrimary;
144
Removed:
callback: [ MFTUser tryLoginUser: user ];
145
Removed:
with: 'Register' ]
146
Removed:
]
147
Removed:
148
Removed:
{ #category : #rendering }
149
Removed:
MFTLoginAndRegisterComponent >> renderRegisterModalHeaderOn: html [
150
Removed:
151
Removed:
html modalHeader: [
152
Removed:
html modalTitle
153
Removed:
level5;
154
Removed:
with: 'Register'.
155
Removed:
html modalCloseButton ]
156
Removed:
]
157
Removed:
158
Removed:
{ #category : #rendering }
159
Removed:
MFTLoginAndRegisterComponent >> renderRegisterModalOn: html [
160
Removed:
161
Removed:
html modal
162
Removed:
id: 'registerModal';
163
Removed:
fade;
164
Removed:
with: [
165
Removed:
html modalDialog
166
Removed:
beCentered;
167
Removed:
with: [
168
Removed:
html modalContent: [
169
Removed:
html form: [
170
Removed:
self renderRegisterModalHeaderOn: html.
171
Removed:
self renderRegisterModalBodyOn: html.
172
Removed:
self renderRegisterModalFooterOn: html ] ] ] ]
173
Removed:
]
src/MyFitnessTracker/MFTLoginRegisterLogoutComponent.class.st
@@ -0,0 +1,130 @@
1
Added:
Class {
2
Added:
#name : #MFTLoginRegisterLogoutComponent,
3
Added:
#superclass : #SBSComponent,
4
Added:
#instVars : [
5
Added:
'user'
6
Added:
],
7
Added:
#category : #'MyFitnessTracker-Components'
8
Added:
}
9
Added:
10
Added:
{ #category : #initialization }
11
Added:
MFTLoginRegisterLogoutComponent >> initialize [
12
Added:
13
Added:
super initialize.
14
Added:
user := MFTUser new
15
Added:
]
16
Added:
17
Added:
{ #category : #rendering }
18
Added:
MFTLoginRegisterLogoutComponent >> renderContentOn: html [
19
Added:
20
Added:
self session user isLoggedIn
21
Added:
ifFalse: [ self renderLoginAndRegisterModalsOn: html ]
22
Added:
ifTrue: [ self renderLogoutButtonOn: html ]
23
Added:
]
24
Added:
25
Added:
{ #category : #rendering }
26
Added:
MFTLoginRegisterLogoutComponent >> renderLoginAndRegisterModalsOn: html [
27
Added:
"Logging in and registering display modal components; they are not in a form."
28
Added:
29
Added:
html buttonGroup: [
30
Added:
html formButton
31
Added:
beSecondary;
32
Added:
beSmall;
33
Added:
dataToggle: 'modal';
34
Added:
dataTarget: '#loginModal';
35
Added:
with: 'Login'.
36
Added:
html formButton
37
Added:
bePrimary;
38
Added:
beSmall;
39
Added:
dataToggle: 'modal';
40
Added:
dataTarget: '#registerModal';
41
Added:
with: 'Register' ].
42
Added:
self renderLoginModalOn: html.
43
Added:
self renderRegisterModalOn: html
44
Added:
]
45
Added:
46
Added:
{ #category : #rendering }
47
Added:
MFTLoginRegisterLogoutComponent >> renderLoginModalOn: html [
48
Added:
49
Added:
html modal
50
Added:
id: 'loginModal';
51
Added:
fade;
52
Added:
with: [
53
Added:
html modalDialog
54
Added:
beCentered;
55
Added:
with: [
56
Added:
html modalContent: [
57
Added:
html form: [
58
Added:
html modalHeader: [
59
Added:
html modalTitle
60
Added:
level5;
61
Added:
with: 'Welcome back!'.
62
Added:
html modalCloseButton ].
63
Added:
html modalBody with: [
64
Added:
html formGroup: [
65
Added:
html label: 'Username'.
66
Added:
html textInput formControl callback: [ :value |
67
Added:
user username: value ] ].
68
Added:
html formGroup: [
69
Added:
html label: 'Password'.
70
Added:
html passwordInput formControl callback: [ :value |
71
Added:
user passwordHashFromString: value ] ] ].
72
Added:
html modalFooter: [
73
Added:
html formButton
74
Added:
beSecondary;
75
Added:
dataDismiss: 'modal';
76
Added:
with: 'Cancel'.
77
Added:
html formButton
78
Added:
bePrimary;
79
Added:
callback: [ self session attemptLogin: user ];
80
Added:
with: 'Login' ] ] ] ] ]
81
Added:
]
82
Added:
83
Added:
{ #category : #rendering }
84
Added:
MFTLoginRegisterLogoutComponent >> renderLogoutButtonOn: html [
85
Added:
"Logging out is an action; the button is in a form."
86
Added:
87
Added:
html form: [
88
Added:
html formButton
89
Added:
beSecondary;
90
Added:
beSmall;
91
Added:
callback: [ self session logout ];
92
Added:
with: 'Logout' ]
93
Added:
]
94
Added:
95
Added:
{ #category : #rendering }
96
Added:
MFTLoginRegisterLogoutComponent >> renderRegisterModalOn: html [
97
Added:
98
Added:
html modal
99
Added:
id: 'registerModal';
100
Added:
fade;
101
Added:
with: [
102
Added:
html modalDialog
103
Added:
beCentered;
104
Added:
with: [
105
Added:
html modalContent: [
106
Added:
html form: [
107
Added:
html modalHeader: [
108
Added:
html modalTitle
109
Added:
level5;
110
Added:
with: 'Welcome on board!'.
111
Added:
html modalCloseButton ].
112
Added:
html modalBody with: [
113
Added:
html formGroup: [
114
Added:
html label: 'Username'.
115
Added:
html textInput formControl callback: [ :value |
116
Added:
user username: value ] ].
117
Added:
html formGroup: [
118
Added:
html label: 'Password'.
119
Added:
html passwordInput formControl callback: [ :value |
120
Added:
user passwordHashFromString: value ] ] ].
121
Added:
html modalFooter: [
122
Added:
html formButton
123
Added:
beSecondary;
124
Added:
dataDismiss: 'modal';
125
Added:
with: 'Cancel'.
126
Added:
html formButton
127
Added:
bePrimary;
128
Added:
callback: [ self session registerNewUser: user ];
129
Added:
with: 'Register' ] ] ] ] ]
130
Added:
]