@@ -223,6 +223,99 @@ $(function() {
223
223
OCA . User_SAML . Admin . resetSettings ( ) ;
224
224
} ) ;
225
225
226
+ function isGroupMappingValid ( ) {
227
+ if ( ! $ ( '#user-saml-group-mapping-field-name' ) . val ( ) ) {
228
+ return false ;
229
+ }
230
+ var allMappingsDeclared = $ ( '#saml-mapping-items' )
231
+ . children ( 'p' )
232
+ . children ( 'input' )
233
+ . map ( function ( ) { return $ ( this ) . val ( ) ; } )
234
+ . get ( )
235
+ . every ( function ( x ) { return x ; } ) ;
236
+ if ( ! allMappingsDeclared ) {
237
+ return false ;
238
+ }
239
+ return true ;
240
+ }
241
+
242
+ function updateGroupMappings ( ) {
243
+ OCA . User_SAML . Admin . setSamlConfigValue (
244
+ 'group-mapping' ,
245
+ 'field-mappings' ,
246
+ JSON . stringify (
247
+ $ ( '#saml-mapping-items' ) . children ( 'p' ) . map ( function ( ) {
248
+ return [ $ ( this ) . children ( '.required' ) . map ( function ( ) { return $ ( this ) . val ( ) } ) . get ( ) ] ;
249
+ } ) . get ( )
250
+ )
251
+ ) ;
252
+ }
253
+
254
+ $ ( document ) . on ( 'change' , '#saml-mapping-items input' , function ( ) {
255
+ if ( isGroupMappingValid ( ) ) {
256
+ $ ( '#user-saml-settings-group-mapping-incomplete' ) . addClass ( 'hidden' ) ;
257
+ OCA . User_SAML . Admin . setSamlConfigValue ( 'group-mapping' , 'enable' , '1' ) ;
258
+ updateGroupMappings ( ) ;
259
+ } else {
260
+ $ ( '#user-saml-settings-group-mapping-incomplete' ) . removeClass ( 'hidden' ) ;
261
+ }
262
+ } ) ;
263
+
264
+ $ ( '#saml-add-mapping' ) . click ( function ( e ) {
265
+ e . preventDefault ( ) ;
266
+ $ ( '#saml-mapping-items' ) . append ( "\
267
+ <p class=\"saml-group-mapping\">\
268
+ <input type=\"text\" placeholder=\"SAML group\" class=\"required\" />\
269
+ <input type=\"text\" placeholder=\"Nextcloud pendant\" class=\"required\" />\
270
+ <button class=\"user-saml-remove-mapping\">Remove mapping</button>\
271
+ </p>" ) ;
272
+ $ ( '#saml-group-initial' ) . clone ( ) . appendTo ( '#saml-mapping-items' ) ;
273
+ $ ( '#user-saml-settings-group-mapping-incomplete' ) . removeClass ( 'hidden' ) ;
274
+ } ) ;
275
+
276
+ $ ( document ) . on ( 'click' , '.user-saml-remove-mapping' , function ( e ) {
277
+ e . preventDefault ( ) ;
278
+ $ ( this ) . closest ( '.saml-group-mapping' ) . remove ( ) ;
279
+ if ( isGroupMappingValid ( ) ) {
280
+ $ ( '#user-saml-settings-group-mapping-incomplete' ) . addClass ( 'hidden' ) ;
281
+ OCA . User_SAML . Admin . setSamlConfigValue ( 'group-mapping' , 'enable' , '1' ) ;
282
+ updateGroupMappings ( ) ;
283
+ }
284
+ } ) ;
285
+
286
+ $ ( '#user-saml-group-mapping-check' ) . change ( function ( ) {
287
+ $ ( this ) . val ( $ ( this ) . val ( ) === '0' ? '1' : '0' ) ;
288
+ if ( $ ( this ) . val ( ) == '1' ) {
289
+ if ( ! isGroupMappingValid ( ) ) {
290
+ $ ( '#user-saml-settings-group-mapping-incomplete' ) . removeClass ( 'hidden' ) ;
291
+ } else {
292
+ OCA . User_SAML . Admin . setSamlConfigValue ( 'group-mapping' , 'enable' , '1' ) ;
293
+ }
294
+ $ ( '#user-saml-group-mapping-field-name' ) . removeAttr ( 'disabled' ) ;
295
+ $ ( '#saml-add-mapping' ) . removeAttr ( 'disabled' ) ;
296
+ $ ( '#saml-mapping-items' ) . children ( 'p' ) . children ( 'input, button' ) . removeAttr ( 'disabled' ) ;
297
+ } else {
298
+ OCA . User_SAML . Admin . setSamlConfigValue ( 'group-mapping' , 'enable' , '0' ) ;
299
+ $ ( '#user-saml-group-mapping-field-name' ) . attr ( 'disabled' , 'disabled' ) ;
300
+ $ ( '#saml-add-mapping' ) . attr ( 'disabled' , 'disabled' ) ;
301
+ $ ( '#user-saml-settings-group-mapping-incomplete' ) . addClass ( 'hidden' ) ;
302
+ $ ( '#saml-mapping-items' ) . children ( 'p' ) . children ( 'input, button' ) . attr ( 'disabled' , 'disabled' ) ;
303
+ }
304
+ } ) ;
305
+
306
+ $ ( '#user-saml-group-mapping-field-name' ) . change ( function ( ) {
307
+ var value = $ ( this ) . val ( ) ;
308
+ if ( value ) {
309
+ if ( isGroupMappingValid ( ) ) {
310
+ $ ( '#user-saml-settings-group-mapping-incomplete' ) . addClass ( 'hidden' ) ;
311
+ }
312
+ OCA . User_SAML . Admin . setSamlConfigValue ( 'group-mapping' , 'enable' , '1' ) ;
313
+ OCA . User_SAML . Admin . setSamlConfigValue ( 'group-mapping' , 'saml-field' , value ) ;
314
+ } else {
315
+ $ ( '#user-saml-settings-group-mapping-incomplete' ) . removeClass ( 'hidden' ) ;
316
+ }
317
+ } ) ;
318
+
226
319
var switchProvider = function ( providerId ) {
227
320
$ ( '.account-list li' ) . removeClass ( 'active' ) ;
228
321
$ ( '.account-list li[data-id="' + providerId + '"]' ) . addClass ( 'active' ) ;
@@ -446,6 +539,13 @@ $(function() {
446
539
text = 'Show attribute mapping settings ...' ;
447
540
}
448
541
break ;
542
+ case 'user-saml-group-mapping' :
543
+ if ( nextSibling . hasClass ( 'hidden' ) ) {
544
+ text = 'Hide group mapping settings ...' ;
545
+ } else {
546
+ text = 'Show group mapping settings ...' ;
547
+ }
548
+ break ;
449
549
}
450
550
el . html ( t ( 'user_saml' , text ) ) ;
451
551
0 commit comments