]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Added CAS user whitelist feature
authorAndrew Engelbrecht <andrew@fsf.org>
Mon, 17 Apr 2017 16:34:25 +0000 (12:34 -0400)
committerAndrew Engelbrecht <ae@n0r.co>
Mon, 17 Apr 2017 16:41:49 +0000 (12:41 -0400)
This feature filters users who may log in via CAS. This is useful when
both CAS and password authentication is enabled and there is a mismatch
between some GNU social account names and CAS user names. This prevents
CAS users from logging in as someone else on GNU social.

plugins/CasAuthentication/CasAuthenticationPlugin.php
plugins/CasAuthentication/README
plugins/CasAuthentication/actions/caslogin.php

index cf0bf4ac5239aeb44aac37cbad4cca22db9e2d93..02ed4cb166a6efa61333bf7408dfa33de5415ac9 100644 (file)
@@ -40,6 +40,7 @@ class CasAuthenticationPlugin extends AuthenticationPlugin
     public $port = 443;
     public $path = '';
     public $takeOverLogin = false;
+    public $user_whitelist = null;
 
     function checkPassword($username, $password)
     {
@@ -145,6 +146,7 @@ class CasAuthenticationPlugin extends AuthenticationPlugin
         $casSettings['port']=$this->port;
         $casSettings['path']=$this->path;
         $casSettings['takeOverLogin']=$this->takeOverLogin;
+        $casSettings['user_whitelist']=$this->user_whitelist;
     }
 
     function onPluginVersion(array &$versions)
index c17a28e54a4097a1488e14ba06f181172988b8ab..2e770a086763e6db1f8d28ec069a24d80c7f6996 100644 (file)
@@ -24,6 +24,11 @@ path (): Path on the server to CAS. Usually blank.
 takeOverLogin (false): Take over the main login action. If takeOverLogin is
     set, anytime the standard username/password login form would be shown,
     a CAS login will be done instead.
+user_whitelist (null): Only allow login via CAS for users listed in this
+    array. This is useful when both CAS and password authentication is enabled
+    and there is a mismatch between some GNU social account names and CAS user
+    names. This prevents CAS users from logging in as someone else on GNU
+    social. When set to null, no CAS logins are filtered by this feature.
 
 * required
 default values are in (parenthesis)
index 7310072d92b770b0290495ee4b874b5f31230227..9250b43b7a91cf720e8daea42e557ff16cb86395 100644 (file)
@@ -41,6 +41,11 @@ class CasloginAction extends Action
                 $this->serverError(_m('Incorrect username or password.'));
             }
 
+            if ($casSettings['user_whitelist'] != null && !in_array($user->nickname, $casSettings['user_whitelist'])) {
+                // TRANS: Server error displayed when trying to log in with non-whitelisted user name (when whitelists are enabled.)
+                $this->serverError(_m('Incorrect username or password.'));
+            }
+
             // success!
             if (!common_set_user($user)) {
                 // TRANS: Server error displayed when login fails in CAS authentication plugin.