From ff14ff6008706fd17a18b9aaf2980f062ce6d64e Mon Sep 17 00:00:00 2001 From: RainLoop Team Date: Tue, 10 Dec 2013 17:32:34 +0400 Subject: [PATCH] Add new white list plugin --- plugins/white-list/LICENSE | 20 ++++++++++++++ plugins/white-list/README | 1 + plugins/white-list/VERSION | 1 + plugins/white-list/index.php | 52 ++++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 plugins/white-list/LICENSE create mode 100644 plugins/white-list/README create mode 100644 plugins/white-list/VERSION create mode 100644 plugins/white-list/index.php diff --git a/plugins/white-list/LICENSE b/plugins/white-list/LICENSE new file mode 100644 index 000000000..271342337 --- /dev/null +++ b/plugins/white-list/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013 RainLoop Team + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/plugins/white-list/README b/plugins/white-list/README new file mode 100644 index 000000000..64fb7dc2a --- /dev/null +++ b/plugins/white-list/README @@ -0,0 +1 @@ +Simple white list plugin \ No newline at end of file diff --git a/plugins/white-list/VERSION b/plugins/white-list/VERSION new file mode 100644 index 000000000..9f8e9b69a --- /dev/null +++ b/plugins/white-list/VERSION @@ -0,0 +1 @@ +1.0 \ No newline at end of file diff --git a/plugins/white-list/index.php b/plugins/white-list/index.php new file mode 100644 index 000000000..547c001c1 --- /dev/null +++ b/plugins/white-list/index.php @@ -0,0 +1,52 @@ +addHook('filter.login-credentials', 'FilterLoginCredentials'); + } + + /** + * @param string $sEmail + * @param string $sLogin + * @param string $sPassword + * + * @throws \RainLoop\Exceptions\ClientException + */ + public function FilterLoginCredentials(&$sEmail, &$sLogin, &$sPassword) + { + $sWhiteList = \trim($this->Config()->Get('plugin', 'white_list', '')); + if (0 < strlen($sWhiteList) && !\RainLoop\Plugins\Helper::ValidateWildcardValues($sEmail, $sWhiteList)) + { + $sExceptions = \trim($this->Config()->Get('plugin', 'exceptions', '')); + if (0 === \strlen($sExceptions) || !\RainLoop\Plugins\Helper::ValidateWildcardValues($sEmail, $sExceptions)) + { + throw new \RainLoop\Exceptions\ClientException( + $this->Config()->Get('plugin', 'auth_error', true) ? + \RainLoop\Notifications::AuthError : \RainLoop\Notifications::AccountNotAllowed); + } + } + } + + /** + * @return array + */ + public function configMapping() + { + return array( + \RainLoop\Plugins\Property::NewInstance('auth_error')->SetLabel('Auth Error') + ->SetType(\RainLoop\Enumerations\PluginPropertyType::BOOL) + ->SetDescription('Throw an authentication error instead of an access error.') + ->SetDefaultValue(true), + \RainLoop\Plugins\Property::NewInstance('white_list')->SetLabel('White List') + ->SetType(\RainLoop\Enumerations\PluginPropertyType::STRING_TEXT) + ->SetDescription('Emails white list, space as delimiter, wildcard supported.') + ->SetDefaultValue('*@domain1.com user@domain2.com'), + \RainLoop\Plugins\Property::NewInstance('exceptions')->SetLabel('Exceptions') + ->SetType(\RainLoop\Enumerations\PluginPropertyType::STRING_TEXT) + ->SetDescription('Exceptions for white list, space as delimiter, wildcard supported.') + ->SetDefaultValue('demo@domain1.com *@domain2.com admin@*') + ); + } +}