8
8
9
9
namespace ActiveCollab \Authentication \LoginPolicy ;
10
10
11
+ use InvalidArgumentException ;
12
+
11
13
/**
12
14
* @package ActiveCollab\Authentication\LoginPolicy
13
15
*/
@@ -56,25 +58,27 @@ class LoginPolicy implements LoginPolicyInterface
56
58
/**
57
59
* LoginPolicy constructor.
58
60
*
59
- * @param string $username_format
60
- * @param bool $remember_extends_session
61
- * @param bool $password_change_enabled
62
- * @param bool $password_recovery_enabled
63
- * @param string $external_login_url
64
- * @param string $external_logout_url
65
- * @param string $external_change_password_url
66
- * @param string $external_update_profile_url
61
+ * @param string $username_format
62
+ * @param bool $remember_extends_session
63
+ * @param bool $password_change_enabled
64
+ * @param bool $password_recovery_enabled
65
+ * @param string|null $external_login_url
66
+ * @param string|null $external_logout_url
67
+ * @param string|null $external_change_password_url
68
+ * @param string|null $external_update_profile_url
67
69
*/
68
- public function __construct ($ username_format , $ remember_extends_session , $ password_change_enabled , $ password_recovery_enabled , $ external_login_url , $ external_logout_url , $ external_change_password_url , $ external_update_profile_url )
70
+ public function __construct ($ username_format = self :: USERNAME_FORMAT_TEXT , $ remember_extends_session = true , $ password_change_enabled = true , $ password_recovery_enabled = true , $ external_login_url = null , $ external_logout_url = null , $ external_change_password_url = null , $ external_update_profile_url = null )
69
71
{
70
- $ this ->username_format = $ username_format ;
71
- $ this ->remember_extends_session = (bool ) $ remember_extends_session ;
72
- $ this ->password_change_enabled = (bool ) $ password_change_enabled ;
73
- $ this ->password_recovery_enabled = (bool ) $ password_recovery_enabled ;
74
- $ this ->external_login_url = $ external_login_url ;
75
- $ this ->external_logout_url = $ external_logout_url ;
76
- $ this ->external_change_password_url = $ external_change_password_url ;
77
- $ this ->external_update_profile_url = $ external_update_profile_url ;
72
+ $ this ->setUsernameFormat ($ username_format );
73
+
74
+ $ this ->setRememberExtendsSession ($ remember_extends_session );
75
+ $ this ->setIsPasswordChangeEnabled ($ password_change_enabled );
76
+ $ this ->setIsPasswordRecoveryEnabled ($ password_recovery_enabled );
77
+
78
+ $ this ->setExternalLoginUrl ($ external_login_url );
79
+ $ this ->setExternalLogoutUrl ($ external_logout_url );
80
+ $ this ->setExternalChangePasswordUrl ($ external_change_password_url );
81
+ $ this ->setExternalUpdateProfileUrl ($ external_update_profile_url );
78
82
}
79
83
80
84
/**
@@ -85,6 +89,20 @@ public function getUsernameFormat()
85
89
return $ this ->username_format ;
86
90
}
87
91
92
+ /**
93
+ * {@inheritdoc}
94
+ */
95
+ public function &setUsernameFormat ($ value )
96
+ {
97
+ if (in_array ($ value , self ::VALID_USERNAME_FORMATS )) {
98
+ $ this ->username_format = $ value ;
99
+ } else {
100
+ throw new InvalidArgumentException ('Username format is not valid ' );
101
+ }
102
+
103
+ return $ this ;
104
+ }
105
+
88
106
/**
89
107
* {@inheritdoc}
90
108
*/
@@ -93,6 +111,16 @@ public function rememberExtendsSession()
93
111
return $ this ->remember_extends_session ;
94
112
}
95
113
114
+ /**
115
+ * {@inheritdoc}
116
+ */
117
+ public function &setRememberExtendsSession ($ value )
118
+ {
119
+ $ this ->remember_extends_session = (bool ) $ value ;
120
+
121
+ return $ this ;
122
+ }
123
+
96
124
/**
97
125
* {@inheritdoc}
98
126
*/
@@ -101,6 +129,16 @@ public function isPasswordChangeEnabled()
101
129
return $ this ->password_change_enabled ;
102
130
}
103
131
132
+ /**
133
+ * {@inheritdoc}
134
+ */
135
+ public function &setIsPasswordChangeEnabled ($ value )
136
+ {
137
+ $ this ->password_change_enabled = (bool ) $ value ;
138
+
139
+ return $ this ;
140
+ }
141
+
104
142
/**
105
143
* {@inheritdoc}
106
144
*/
@@ -109,6 +147,16 @@ public function isPasswordRecoveryEnabled()
109
147
return $ this ->password_recovery_enabled ;
110
148
}
111
149
150
+ /**
151
+ * {@inheritdoc}
152
+ */
153
+ public function &setIsPasswordRecoveryEnabled ($ value )
154
+ {
155
+ $ this ->password_recovery_enabled = (bool ) $ value ;
156
+
157
+ return $ this ;
158
+ }
159
+
112
160
/**
113
161
* {@inheritdoc}
114
162
*/
@@ -117,6 +165,16 @@ public function getExternalLoginUrl()
117
165
return $ this ->external_login_url ;
118
166
}
119
167
168
+ /**
169
+ * {@inheritdoc}
170
+ */
171
+ public function &setExternalLoginUrl ($ value )
172
+ {
173
+ $ this ->external_login_url = $ this ->getValidExternalUrlValue ($ value );
174
+
175
+ return $ this ;
176
+ }
177
+
120
178
/**
121
179
* {@inheritdoc}
122
180
*/
@@ -125,6 +183,16 @@ public function getExternalLogoutUrl()
125
183
return $ this ->external_logout_url ;
126
184
}
127
185
186
+ /**
187
+ * {@inheritdoc}
188
+ */
189
+ public function &setExternalLogoutUrl ($ value )
190
+ {
191
+ $ this ->external_logout_url = $ this ->getValidExternalUrlValue ($ value );
192
+
193
+ return $ this ;
194
+ }
195
+
128
196
/**
129
197
* {@inheritdoc}
130
198
*/
@@ -133,6 +201,16 @@ public function getExternalChangePasswordUrl()
133
201
return $ this ->external_change_password_url ;
134
202
}
135
203
204
+ /**
205
+ * {@inheritdoc}
206
+ */
207
+ public function &setExternalChangePasswordUrl ($ value )
208
+ {
209
+ $ this ->external_change_password_url = $ this ->getValidExternalUrlValue ($ value );
210
+
211
+ return $ this ;
212
+ }
213
+
136
214
/**
137
215
* {@inheritdoc}
138
216
*/
@@ -141,6 +219,31 @@ public function getExternalUpdateProfileUrl()
141
219
return $ this ->external_update_profile_url ;
142
220
}
143
221
222
+ /**
223
+ * {@inheritdoc}
224
+ */
225
+ public function &setExternalUpdateProfileUrl ($ value )
226
+ {
227
+ $ this ->external_update_profile_url = $ this ->getValidExternalUrlValue ($ value );
228
+
229
+ return $ this ;
230
+ }
231
+
232
+ /**
233
+ * Validate and return acceptable URL value.
234
+ *
235
+ * @param string|null $url
236
+ * @return string|null
237
+ */
238
+ private function getValidExternalUrlValue ($ url )
239
+ {
240
+ if ($ url === null || (is_string ($ url ) && filter_var ($ url , FILTER_VALIDATE_URL ))) {
241
+ return $ url ;
242
+ }
243
+
244
+ throw new InvalidArgumentException ('URL is not valid ' );
245
+ }
246
+
144
247
/**
145
248
* {@inheritdoc}
146
249
*/
0 commit comments