Compare commits

...

29 Commits
1.1.1 ... main

Author SHA1 Message Date
Marcel Kapfer f0c09cfb85
Added extension key for TYPO3
This will be mandatory in the future
2021-04-12 20:03:58 +02:00
Marcel Kapfer 9086c9d8f8
Release preparations for version 1.3.1 2021-04-12 20:00:16 +02:00
Marcel Kapfer 8cf62b3e2b
Fixed composer dependency on TYPO3
The correct dependency is typo3/cms-core not typo3/cms
2021-04-12 19:58:48 +02:00
Marcel Kapfer 3699cdb56f
Release preparations for 1.3.0 2021-04-12 19:30:03 +02:00
Marcel Kapfer f50eaf4de4
Reworked ext_emconf keys 2021-04-12 19:29:41 +02:00
Marcel Kapfer 29f0d5b59f
Formated composer.json 2021-04-12 19:20:50 +02:00
Marcel Kapfer 4871ccdb6e
Add extension icon 2021-03-29 21:31:28 +02:00
Marcel Kapfer 669a29a7a5
Delete no longer necessary AddCustomGroupsSlot class 2021-03-29 19:46:53 +02:00
Marcel Kapfer 71ab4dfd48
Remove signal slot dispatcher for fal_securedownload 2021-03-29 19:40:06 +02:00
Marcel Kapfer 8f2bc0d6c4
Rename to FeIpLogin 2021-03-29 19:13:31 +02:00
Marcel Kapfer 837ed90239
Set version to 1.3.0-dev 2021-03-29 17:03:37 +02:00
Marcel Kapfer 2b0c812ced
Added support for TYPO3 v10.4 2021-03-29 17:02:33 +02:00
Marcel Kapfer d250cf4ca8
Dropped support for fal_securedownload 2021-03-29 16:59:15 +02:00
Marcel Kapfer f04547de7d
Added script for generating extension archive 2021-03-29 16:50:50 +02:00
Marcel Kapfer 13efde1cfe
Renamed extension to feipauth
PHP Namespace: MMK2410/FeIpAuth
2021-03-29 16:37:45 +02:00
Marcel Kapfer 4878b2d9f7
Formatted all files according to editorconfig 2021-03-29 16:15:29 +02:00
Marcel Kapfer 261eed61cf
Added Marcel Kapfer <opensource@mmk2410.org> as authors 2021-03-29 15:47:38 +02:00
Marcel Kapfer 401b40e2c2
Updated repository URL 2021-03-29 15:43:27 +02:00
Marcel Kapfer c2cc3595d4
Added EditorConfig file 2021-03-29 15:41:45 +02:00
Marcel Kapfer 5a9abe6996
Added LICENSE file 2021-03-29 15:14:54 +02:00
Marcel Kapfer 6151f3092e
Added note about fork. 2021-03-29 15:09:06 +02:00
Marcel Kapfer 0c08efaeec
Release preparations 2018-08-27 00:10:46 +02:00
Marcel Kapfer 9f77761e02
Switched to Doctrine DBAL
$GLOBALS['TYPO3_DB'] is no longer supported in v9
2018-08-27 00:08:16 +02:00
Marcel Kapfer d52a108c8e
AuthenticationServiceCore moved from Sv to Core\Authentication 2018-08-27 00:07:35 +02:00
Marcel Kapfer 3fc49016c5
Dropped support for v7 and actived v9 2018-08-27 00:07:13 +02:00
Marcel Kapfer e639db676b
Removed two empty trailing lines in ext_localconf.php 2018-08-27 00:06:22 +02:00
Marcel Kapfer 2c1ff33ca6
Removed not-working images from README 2018-08-27 00:06:04 +02:00
Marcel Kapfer 73ebb6e9a0
Added copyright notice to AddCustomGroupsSlot.php 2018-08-27 00:05:29 +02:00
Marcel Kapfer d8b7db4949
Added myself (Marcel Kapfer) as author 2018-08-27 00:05:03 +02:00
16 changed files with 268 additions and 146 deletions

66
.editorconfig Normal file
View File

@ -0,0 +1,66 @@
# EditorConfig is awesome: http://EditorConfig.org
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
# CSS-Files
[*.css]
indent_style = space
indent_size = 4
# HTML-Files
[*.html]
indent_style = space
indent_size = 4
# TMPL-Files
[*.tmpl]
indent_style = space
indent_size = 4
# LESS-Files
[*.less]
indent_style = space
indent_size = 4
# JS-Files
[*.js]
indent_style = space
indent_size = 4
# PHP-Files
[*.php]
indent_style = space
indent_size = 4
# MD-Files
[*.md]
indent_style = space
indent_size = 4
# ReST-Files
[*.rst]
indent_style = space
indent_size = 3
# TypoScript
[*.typoscript]
indent_style = space
indent_size = 4
# YML-Files
[{*.yml,*.yaml}]
indent_style = space
indent_size = 4
# package.json, composer.json or .travis.yml
[{package.json,composer.json,.travis.yml}]
indent_style = space
indent_size = 2

1
.gitignore vendored
View File

@ -13,3 +13,4 @@ Thumbs.db
node_modules/
.sass-cache/
npm-debug.log
feiplogin.zip

View File

@ -1,10 +1,12 @@
<?php
namespace In2code\In2frontendauthentication\Domain\Repository;
namespace MMK2410\FeIpLogin\Domain\Repository;
/***************************************************************
* Copyright notice
*
* (c) 2016 Alex Kellner <alexander.kellner@in2code.de>, in2code.de
* (c) 2018 Marcel Kapfer <stuve.oeffentlichkeitsarbeit@uni-ulm.de>, Verfasste Studierendenschaft der Universität Ulm
* (c) 2021 Marcel Kapfer <opensource@mmk2410.org>
*
* All rights reserved
*
@ -25,8 +27,10 @@ namespace In2code\In2frontendauthentication\Domain\Repository;
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use TYPO3\CMS\Core\Database\DatabaseConnection;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;
use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction;
/**
* Class Contact
@ -42,11 +46,23 @@ class FeGroupsRepository
*/
public function findByCurrentIpAddress()
{
$rows = $this->getDatabaseConnection()->exec_SELECTgetRows(
'*',
self::TABLE_NAME,
'deleted = 0 and hidden = 0' . $this->getIpQueryString()
);
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::TABLE_NAME);
$queryBuilder
->getRestrictions()
->removeAll()
->add(GeneralUtility::makeInstance(DeletedRestriction::class))
->add(GeneralUtility::makeInstance(HiddenRestriction::class));
$queryBuilder
->select('*')
->from(self::TABLE_NAME);
$this->getIpQueryString($queryBuilder);
$rows = $queryBuilder->execute()
->fetchAll();
if (!empty($rows)) {
return $rows;
}
@ -57,19 +73,22 @@ class FeGroupsRepository
* Build string like
* ip_mask like "%1.1.1.1%" and ip_mask like "%2.2.2.2%"
*
* @return string
* @param QueryBuilder $queryBuilder
*/
protected function getIpQueryString()
protected function getIpQueryString(&$queryBuilder)
{
$queryString = ' and (';
foreach ($this->getCurrentIpAddresses() as $ipAddress) {
$databaseConnection = $this->getDatabaseConnection();
$ipAddress = $databaseConnection->quoteStr($ipAddress, self::TABLE_NAME);
$queryString .= 'ip_mask like "%' . $ipAddress . '%" or ';
$queryBuilder->orWhere(
$queryBuilder->expr()->like(
'ip_mask',
$queryBuilder->createNamedParameter(
'%' .
$queryBuilder->escapeLikeWildcards($ipAddress) .
'%'
)
)
);
}
$queryString = rtrim($queryString, ' or ');
$queryString .= ')';
return $queryString;
}
/**
@ -89,13 +108,4 @@ class FeGroupsRepository
$ips[] = $parts[0] . '.' . $parts[1] . '.' . $parts[2] . '.*';
return $ips;
}
/**
* @return DatabaseConnection
* @SuppressWarnings(PHPMD.Superglobals)
*/
protected function getDatabaseConnection()
{
return $GLOBALS['TYPO3_DB'];
}
}

View File

@ -1,10 +1,12 @@
<?php
namespace In2code\In2frontendauthentication\Domain\Service;
namespace MMK2410\FeIpLogin\Domain\Service;
/***************************************************************
* Copyright notice
*
* (c) 2016 Alex Kellner <alexander.kellner@in2code.de>, in2code.de
* (c) 2018 Marcel Kapfer <stuve.oeffentlichkeitsarbeit@uni-ulm.de>, Verfasste Studierendenschaft der Universität Ulm
* (c) 2021 Marcel Kapfer <opensource@mmk2410.org>
*
* All rights reserved
*
@ -25,14 +27,14 @@ namespace In2code\In2frontendauthentication\Domain\Service;
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
use In2code\In2frontendauthentication\Domain\Repository\FeGroupsRepository;
use MMK2410\FeIpLogin\Domain\Repository\FeGroupsRepository;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Authentication\AuthenticationService as AuthenticationServiceCore;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Sv\AuthenticationService as AuthenticationServiceCore;
/**
* Class AuthenticationService
* @package In2code\In2frontendauthentication\Domain\Service
* @package MMK2410\FeIpLogin\Domain\Service
*/
class AuthenticationService extends AuthenticationServiceCore
{
@ -46,7 +48,7 @@ class AuthenticationService extends AuthenticationServiceCore
public function getGroups($user, $knownGroups)
{
$feGroupsRepository = GeneralUtility::makeInstance(ObjectManager::class)
->get(FeGroupsRepository::class);
->get(FeGroupsRepository::class);
$feGroups = $feGroupsRepository->findByCurrentIpAddress();
if (!empty($feGroups)) {
return $feGroups;

View File

@ -1,23 +0,0 @@
<?php
namespace In2code\In2frontendauthentication\Slot;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use In2code\In2frontendauthentication\Domain\Repository\FeGroupsRepository;
class AddCustomGroupsSlot
{
public function addCustomGroups($customGroups)
{
$feGroupsRepository = GeneralUtility::makeInstance(ObjectManager::class)
->get(FeGroupsRepository::class);
$feGroups = $feGroupsRepository->findByCurrentIpAddress();
foreach ($feGroups as $feGroup) {
$customGroups[] = $feGroup['uid'];
}
return array($customGroups);
}
}

View File

@ -3,13 +3,13 @@
/**
* Table configuration fe_users
*/
use In2code\In2frontendauthentication\Domain\Repository\FeGroupsRepository;
use MMK2410\FeIpLogin\Domain\Repository\FeGroupsRepository;
$columns = [
'ip_mask' => [
'exclude' => 0,
'label' => 'LLL:EXT:in2frontendauthentication/Resources/Private/Language/locallang_db.xlf:' .
FeGroupsRepository::TABLE_NAME . '.ip_mask',
'label' => 'LLL:EXT:feiplogin/Resources/Private/Language/locallang_db.xlf:' .
FeGroupsRepository::TABLE_NAME . '.ip_mask',
'config' => [
'type' => 'text',
'cols' => '40',

18
LICENSE Normal file
View File

@ -0,0 +1,18 @@
TYPO3 extension to simulate fe-login for a group if IP-address fits.
Copyright (C) 2016 Alex Kellner <alexander.kellner@in2code.de>, in2code.de
Copyright (C) 2018 Marcel Kapfer <stuve.oeffentlichkeitsarbeit@uni-ulm.de>, Verfasste Studierendenschaft der Universität Ulm
Copyright (C) 2021 Marcel Kapfer <opensource@mmk2410.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

View File

@ -1,30 +1,29 @@
*Note: this extension is forked from https://github.com/in2code-de/in2frontendauthentication starting with commit d8b7db4949*
## Introduction
TYPO3 extension to simulate fe-login for a group if IP-address fits.
Set ip addresses in fe_groups.
<img src="https://box.everhelper.me/attachment/504010/a2afed54-7cb5-4e1a-bd0c-f21398236304/262407-2k6yGwBCEmgeKSJU/screen.png" alt="example usergroup configuration" />
<img src="https://box.everhelper.me/attachment/504018/a2afed54-7cb5-4e1a-bd0c-f21398236304/262407-6xMmMIsdvaIv8tUz/screen.png" alt="example contentelement that's normally only visible for users of group 'Test'" />
**Note:** This allows you to show/hide contentelements, pages and other records to a specific usergroup.
But "showAtAnyLogin" or "hideAtAnyLogin" is not supported at the moment.
## Supported TYPO3-Versions
* TYPO3 10.4
* TYPO3 9.5
* TYPO3 8.7
* TYPO3 7.6
## Supported Extension
* fal_securedownload in version 2.0 or newer
## Changelog
| Version | Date | State | Description |
| ---------- | ---------- | ---------- | ---------------------------------------------------------------------------- |
| 1.1.1 | 2017-07-18 | Bugfix | Signal update from fal_securedownload |
| 1.1.0 | 2017-07-10 | Feature | Support EXT:fal_securedownload >= version 2.0.0 |
| 1.0.2 | 2016-08-03 | Bugfix | Allow multiple usergroups |
| 1.0.1 | 2016-06-23 | Bugfix | Small fix in german locallang |
| 1.0.0 | 2016-06-10 | Task | Initial release |
| Version | Date | State | Description |
| ---------- | ---------- | ---------- | ----------------------------------------------------------------------------- |
| 1.3.1 | 2021-04.12 | Task | Correct composer dependency for TYPO3 |
| 1.3.0 | 2021-04-12 | Task | Support for TYPO3 v10, removed EXT:fal_securedownload support |
| 1.2.0 | 2018-08-26 | Feature | Support for TYPO3 v9, switched to Doctrine DBAL, dropped support for TYPO3 v7 |
| 1.1.1 | 2017-07-18 | Bugfix | Signal update from fal_securedownload |
| 1.1.0 | 2017-07-10 | Feature | Support EXT:fal_securedownload >= version 2.0.0 |
| 1.0.2 | 2016-08-03 | Bugfix | Allow multiple usergroups |
| 1.0.1 | 2016-06-23 | Bugfix | Small fix in german locallang |
| 1.0.0 | 2016-06-10 | Task | Initial release |

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" target-language="de" datatype="plaintext" original="messages" date="2014-05-02T12:00:00Z" product-name="powermail">
<header/>
<body>
<trans-unit id="fe_groups.ip_mask">
<source>Autologin with IP address (e.g. "192.168.*.*, 133.145.219.8")</source>
<target state="translated">Autologin über IP-Adresse (z.B. "192.168.*.*, 133.145.219.8")</target>
</trans-unit>
</body>
</file>
<file source-language="en" target-language="de" datatype="plaintext" original="messages" date="2014-05-02T12:00:00Z" product-name="feiplogin">
<header/>
<body>
<trans-unit id="fe_groups.ip_mask">
<source>Autologin with IP address (e.g. "192.168.*.*, 133.145.219.8")</source>
<target state="translated">Autologin über IP-Adresse (z.B. "192.168.*.*, 133.145.219.8")</target>
</trans-unit>
</body>
</file>
</xliff>

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
<file source-language="en" datatype="plaintext" original="messages" date="2013-04-13T15:49:07Z" product-name="in2frontendauthentication">
<header/>
<body>
<trans-unit id="fe_groups.ip_mask">
<source>IP access (e.g. "192.168.*.*, 133.145.219.8")</source>
</trans-unit>
</body>
</file>
<file source-language="en" datatype="plaintext" original="messages" date="2013-04-13T15:49:07Z" product-name="feiplogin">
<header/>
<body>
<trans-unit id="fe_groups.ip_mask">
<source>IP access (e.g. "192.168.*.*, 133.145.219.8")</source>
</trans-unit>
</body>
</file>
</xliff>

View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="256"
height="256"
viewBox="0 0 67.733329 67.733329"
version="1.1"
id="svg8"
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
sodipodi:docname="FeIpLogin.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.3978193"
inkscape:cx="132.11591"
inkscape:cy="141.97685"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
inkscape:document-rotation="0"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1011"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-51.168969,-45.077299)">
<path
id="rect833"
style="fill:#333333;fill-rule:evenodd;stroke-width:0.121065"
d="M 85.068656,45.077324 A 21.468655,21.468655 0 0 0 74.301224,47.95356 21.468655,21.468655 0 0 0 63.566939,66.545895 V 79.146482 H 58.06022 v 33.664148 h 53.95083 V 79.146482 h -5.50672 V 66.545895 h -2e-4 A 21.468655,21.468655 0 0 0 95.769794,47.95356 21.468655,21.468655 0 0 0 85.068656,45.077324 Z m -0.0096,6.514582 a 15.204719,17.916401 0 0 1 7.578893,2.400272 15.204719,17.916401 0 0 1 7.602201,15.515925 h 2.1e-4 v 9.638379 H 69.830851 v -9.638379 a 15.204719,17.916401 0 0 1 7.602459,-15.515925 15.204719,17.916401 0 0 1 7.625763,-2.400272 z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -1,26 +1,38 @@
{
"name": "in2code/in2frontendauthentication",
"name": "mmk2410/feiplogin",
"description": "Simulate fe_groups login by IP address",
"keywords": ["typo3", "ip", "felogin"],
"homepage": "https://bitbucket.org/in2code/in2frontendauthentication/overview",
"homepage": "https://git.mmk2410.org/mmk2410/feiplogin",
"authors": [
{
"name": "Alex Kellner",
"email": "alexander.kellner@in2code.de"
},
{
"name": "Marcel Kapfer",
"email": "stuve.oeffentlichkeitsarbeit@uni-ulm.de"
},
{
"name": "Marcel Kapfer",
"email": "opensource@mmk2410.org"
}
],
"type": "typo3-cms-extension",
"license": "GPL-3.0",
"require": {
"typo3/cms": ">=7.6.0 <9.9.99"
"typo3/cms-core": "^8.7 || ^9.5 || ^10.4"
},
"replace": {
"in2frontendauthentication": "self.version",
"typo3-ter/in2frontendauthentication": "self.version"
"typo3-ter/feiplogin": "self.version"
},
"autoload": {
"psr-4": {
"In2code\\In2frontendauthentication\\": "Classes"
"MMK2410\\FeIpLogin\\": "Classes"
}
},
"extra": {
"typo3/cms": {
"extension-key": "feiplogin"
}
}
}

View File

@ -1,46 +1,23 @@
<?php
/***************************************************************
* Extension Manager/Repository config file for ext "powermail".
*
* Auto generated 04-07-2013 17:03
*
* Manual updates:
* Only the data in the array - everything else is removed by next
* writing. "version" and "dependencies" must not be touched!
***************************************************************/
$EM_CONF[$_EXTKEY] = [
'title' => 'in2frontendauthentication',
'title' => 'feiplogin',
'description' => 'Authenticate every visitor as a defined frontend user if IP matches',
'category' => 'plugin',
'shy' => 0,
'version' => '1.1.1',
'dependencies' => 'cms,extbase,fluid',
'conflicts' => '',
'priority' => '',
'loadOrder' => '',
'module' => '',
'category' => 'fe',
'version' => '1.3.1',
'state' => 'stable',
'uploadfolder' => 0,
'createDirs' => '',
'modify_tables' => '',
'clearcacheonload' => 1,
'lockType' => '',
'author' => 'Alex Kellner',
'author_email' => 'alexander.kellner@in2code.de',
'author_company' => 'in2code.de',
'CGLcompliance' => '',
'CGLcompliance_note' => '',
'clearCacheOnLoad' => 1,
'author' => 'Marcel Kapfer',
'author_email' => 'opensource@mmk2410.org',
'constraints' => [
'depends' => [
'typo3' => '7.6.0-8.99.99',
'extbase' => '7.6.0-8.99.99',
'fluid' => '7.6.0-8.99.99',
'php' => '5.5.0-0.0.0'
'typo3' => '8.7.0-10.4.99',
'php' => '7.0.0-7.4.99'
],
'conflicts' => [],
'suggests' => [],
],
'_md5_values_when_last_written' => '',
'autoload' => [
'psr-4' => [
'MMK2410\\FeIpLogin\\' => 'Classes'
]
]
];

View File

@ -2,9 +2,9 @@
defined('TYPO3_MODE') || die();
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addService(
'in2frontendauthentication',
'feiplogin',
'auth',
\In2code\In2frontendauthentication\Domain\Service\AuthenticationService::class,
\MMK2410\FeIpLogin\Domain\Service\AuthenticationService::class,
[
'title' => 'Frontenduser authentication service',
'description' => 'Authentication visitors as frontend users if IP address is matching.',
@ -14,17 +14,6 @@ defined('TYPO3_MODE') || die();
'quality' => 50,
'os' => '',
'exec' => '',
'className' => \In2code\In2frontendauthentication\Domain\Service\AuthenticationService::class,
'className' => \MMK2410\FeIpLogin\Domain\Service\AuthenticationService::class,
]
);
/** @var \TYPO3\CMS\Extbase\SignalSlot\Dispatcher $signalSlotDispatcher */
$signalSlotDispatcher = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\SignalSlot\\Dispatcher');
$signalSlotDispatcher->connect(
\BeechIt\FalSecuredownload\Security\CheckPermissions::class,
'AddCustomGroups',
\In2code\In2frontendauthentication\Slot\AddCustomGroupsSlot::class,
'addCustomGroups'
);

View File

@ -2,5 +2,5 @@
# Table structure for table 'fe_groups'
#
CREATE TABLE fe_groups (
ip_mask text
ip_mask text
);

6
zip.sh Executable file
View File

@ -0,0 +1,6 @@
#!/bin/sh
ZIP_FILE=feiplogin.zip
if [ -f "$ZIP_FILE" ]; then
rm "$ZIP_FILE"
fi
zip -r "$ZIP_FILE" ./ -x .git/\*