diff --git a/Docs/help_groups.md b/Docs/help_groups.md new file mode 100644 index 0000000..8f3ee3c --- /dev/null +++ b/Docs/help_groups.md @@ -0,0 +1,79 @@ +# Groups + +In `Groups` you can create, delete and modify the groups. Groups are global for all applications and units. If you want to have application or unit specific permissions you can do so in the group. + +## General + +![General Settings](img/groups/groups_general.png) + +### Name + +In some cases it makes sense to put some additional information in the group name. In some cases a group is only for a specific unit or application in such a case it could make sense to prefix the group name e.g. `unitname_groupname` or `appname_groupname`. Group names can be changed any time without any side effects. + +### Description + +Sometimes it makes sense to provide some additional information for a group. In such a case you can add this in the discription field. + +## Permissions + +![General Settings](img/groups/groups_permissions.png) + +Permissions have the following components which can be combined to either address a wide e.g. range of units, applications or modules or in order to address a very specific combination of those. + +### Unit + +The unit this permission is set for. Leave empty to address all units + +### App + +The application this permission is set for. Leave empty to address all applications + +### Module + +The module this permission is set for. Leave empty to address all modules + +### Type + +The type is a `module` specific subpart which only should be set if the module is defined in the permission. For further information what kind of types are available for a module please refere to the module specific documentation. Usually it referes to a single page of a module. + +### Element + +The element is a `module` and `type` specific subpart which only should be set if the `type` is defined in the permission. For further information what kind of elements are available for a module and type please refere to the module specific documentation. Usually it referes to a section on a module page. + +### Component + +The component is a `module`, `type` and `element` specific subpart which only should be set if the `element` is defined in the permission. For further information what kind of components are available for a module, type and element please refere to the module specific documentation. Usually it referes to a single input or option in a module. + +### Permission + +The actual permission consists of create (C), read (R), update (U), delete (D), permission (P) options. + +#### Create (C) + +This allows a user to create something. Usually a user should also have (R) permission in this case. + +#### Read (R) + +This allows a user to read/see something. + +#### Update (U) + +This allows a user to update/modify something. Usually a user should also have (R) permission in this case. + +#### Delete (D) + +This allows a user to delete/remove something. Usually a user should also have (R) permission in this case. + +#### Permission (P) + +This allows a user to change permissions. Usually a user should also have (C, R, U, D) permissions because the user could just give himself these permissions anyways. Only selected users should have this permission even if it is only specified for a specific module, type, element or component. + +## Accounts + +![General Settings](img/groups/groups_accounts.png) + +In the accounts section you can see all users that are assigned to this group and you can also add or remove accounts. If you would like to add all users from a different group simply select the group and all the users that are part of this group will be added to this group as well (one time only, there will be **no relation** (e.g. parent/child group) between these two groups). + +## Audit Log + +In the audit log you can see all the changes of the group. \ No newline at end of file diff --git a/Docs/help_settings.md b/Docs/help_settings.md new file mode 100644 index 0000000..a4b46e0 --- /dev/null +++ b/Docs/help_settings.md @@ -0,0 +1,93 @@ +# Settings + +## Genral + +In the admin module under `General` the global settings can be set. + +### Security + +In the security section it's possible to define and modify the global security settings. These settings will be used for every user. + +![General Settings](img/general/settings_security.png) + +#### Password Regex + +In this field the password strucutre can be defined that is required by every account. Examples are: + +##### Password Example 1 + +At least 8 characters including at least one numeric value, one lower letter, one upper letter, one special char + +```^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&;:\(\)\[\]=\{\}\+\-])[.]{8,}``` + +##### Password Example 2 + +At least 8 characters including at least one numeric value, one upper letter, one special char + +```^(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&;:\(\)\[\]=\{\}\+\-])[.]{8,}``` + +##### Password Example 3 + +At least 8 characters including at least one numeric value, one special char + +```^(?=.*\d)(?=.*[$@$!%*?&;:\(\)\[\]=\{\}\+\-])[.]{8,}``` + +##### Password Example 4 + +At least 8 characters including at least one special char + +```^(?=.*[$@$!%*?&;:\(\)\[\]=\{\}\+\-])[.]{8,}``` + +##### Password Example 5 + +At least 8 characters + +```^[.]{8,}``` + +##### Password Example 6 + +At least 12 characters + +```^[.]{12,}``` + +#### Login Retries + +In this field the amount of retries can be defined until the user login receives a timeout. During this timeout period no login is possible even if the correct password is entered. Infinite amount of retries can be activated by setting the value to `-1` + +**Recommended:** `3 times` + +#### Timeout Period + +In this field the timeout period after inputting a incorrect password too often can be specified. During this period the user cannot login even if the password is correct. + +**Recommended:** `30 minutes` + +#### Password Change Interval + +In this field the interval in days can be set in which the password must be changed. If passwords don't have to be changed set the value to `-1` + +**Recommended:** `90 days` + +#### Password History + +In this field the relevant password history can be defined. If a password change interval is defined the new password has to be different from the last `x` passwords + +**Recommended:** `3 last passwords` + +### Logging + +In the logging section the logging settings can be defined. These settings don't include audit logs as they cannot be changed in order to prevent data manipulation. + +**Recommended:** `active and default path` + +![General Settings](img/general/settings_logging.png) + +## Localization + +In the localization tab it's possible to define the default localization settings. Be aware that users may have localization settings different from the default settings. These localization settings are only important to provide a fallback if the user localization settings are not working. + +![Localization Settings](img/general/settings_localization.png) + +### Defaults + +In the defaults field you can select a default localization configuration which you can adjust afterwards. diff --git a/Docs/img/general/settings_localization.png b/Docs/img/general/settings_localization.png new file mode 100644 index 0000000..92b3a97 Binary files /dev/null and b/Docs/img/general/settings_localization.png differ diff --git a/Docs/img/general/settings_logging.png b/Docs/img/general/settings_logging.png new file mode 100644 index 0000000..96d3fed Binary files /dev/null and b/Docs/img/general/settings_logging.png differ diff --git a/Docs/img/general/settings_security.png b/Docs/img/general/settings_security.png new file mode 100644 index 0000000..34c42fc Binary files /dev/null and b/Docs/img/general/settings_security.png differ diff --git a/Docs/img/groups/groups_accounts.png b/Docs/img/groups/groups_accounts.png new file mode 100644 index 0000000..009dac0 Binary files /dev/null and b/Docs/img/groups/groups_accounts.png differ diff --git a/Docs/img/groups/groups_general.png b/Docs/img/groups/groups_general.png new file mode 100644 index 0000000..a6acde7 Binary files /dev/null and b/Docs/img/groups/groups_general.png differ diff --git a/Docs/img/groups/groups_permissions.png b/Docs/img/groups/groups_permissions.png new file mode 100644 index 0000000..fed0971 Binary files /dev/null and b/Docs/img/groups/groups_permissions.png differ diff --git a/Theme/Backend/Lang/en.lang.php b/Theme/Backend/Lang/en.lang.php index c2f7ebb..76e1260 100644 --- a/Theme/Backend/Lang/en.lang.php +++ b/Theme/Backend/Lang/en.lang.php @@ -18,6 +18,7 @@ return [ 'Active' => 'Active', 'Activate' => 'Activate', 'Activity' => 'Activity', + 'AuditLog' => 'Audit Log', 'Available' => 'Available', 'All' => 'All', 'Area' => 'Area', @@ -29,7 +30,9 @@ return [ 'Created' => 'Created', 'CreatedBy' => 'Created By', 'Currency' => 'Currency', + 'Customized' => 'Customized', 'DecimalPoint' => 'Decimal Point', + 'Defaults' => 'Defaults', 'Description' => 'Description', 'Delete' => 'Delete', 'Deactivate' => 'Deactivate', @@ -51,8 +54,13 @@ return [ 'Large' => 'Large', 'Length' => 'Length', 'Light' => 'Light', + 'Load' => 'Load', 'Localization' => 'Localization', 'Long' => 'Long', + 'Log' => 'Log', + 'LoginRetries' => 'Login Retries', + 'LogPath' => 'Log Path', + 'Logging' => 'Logging', 'Loginname' => 'Login Name', 'Lowercase' => 'Lowercase', 'Maintenance' => 'Maintenance', @@ -77,6 +85,8 @@ return [ 'Parent' => 'Parent', 'Parents' => 'Parents', 'Password' => 'Password', + 'PasswordChangeInterval' => 'Password Change Interval (days)', + 'PasswordHistory' => 'Password History', 'PasswordRegex' => 'Password Regex', 'Permissions' => 'Permissions', 'Person' => 'Person', @@ -86,6 +96,7 @@ return [ 'Running' => 'Running', 'Short' => 'Short', 'Sea' => 'Sea', + 'Security' => 'Security', 'Settings' => 'Settings', 'SettingsGeneral' => 'Settings - General', 'Single' => 'Single', @@ -102,6 +113,7 @@ return [ 'Theme' => 'Theme', 'ThousandsSeparator' => 'Thousands Separator', 'Time' => 'Time', + 'TimeoutPeriod' => 'Timeout Period (minutes)', 'Timestamp' => 'Timestamp', 'Timeformat' => 'Timeformat', 'Timeout' => 'Timeout', @@ -137,5 +149,10 @@ return [ 'GroupStatus1' => 'Active', 'GroupStatus2' => 'Inactive', 'GroupStatus4' => 'Hidden', + 'i:PasswordRegex' => 'Password requirement for users', + 'i:LoginRetries' => 'Amount of allowed retries (-1 = unlimited)', + 'i:TimeoutPeriod' => 'Timeout period after too many logins', + 'i:PasswordChangeInterval' => 'Interval in which passwards need to be changed (-1 = never)', + 'i:PasswordHistory' => 'New password has to be different from the last N passwords', ], ]; diff --git a/Theme/Backend/groups-single.tpl.php b/Theme/Backend/groups-single.tpl.php index 9e4a94b..99dc294 100644 --- a/Theme/Backend/groups-single.tpl.php +++ b/Theme/Backend/groups-single.tpl.php @@ -20,119 +20,157 @@ $accounts = $this->getData('accounts'); echo $this->getData('nav')->render(); ?> -
-
-
-

getHtml('Group'); ?>

-
-
- - -
-
-
-
-
-
-
-
- -
-
-
-
-
+
+
+
+
+ +
+
+
+
+

getHtml('Group'); ?>

+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
-
- - - - - - $value) : $c++; ?> - -
getHtml('Accounts') ?>
getHtml('ID', 0, 0); ?> - Name -
- - - - -
getHtml('Empty', 0, 0); ?> - -
- -
-

getHtml('Accounts'); ?>

-
-
- +
+
+ + + + - +
getHtml('Accounts') ?>
getHtml('ID', 0, 0); ?> + Name
-
-
+ $value) : $c++; ?> +
+ + + + +
getHtml('Empty', 0, 0); ?> +
-
-
-
-
-
- - - - - - $value) : $c++; $permission = $value->getPermission(); ?> - -
getHtml('Permissions') ?>
- - getHtml('ID', 0, 0); ?> - Unit - App - Module - Type - Ele. - Comp. - Perm. -
- - getId(); ?> - getUnit(); ?> - getApp(); ?> - getModule(); ?> - getType(); ?> - getElement(); ?> - getComponent(); ?> - - - - - - - - -
getHtml('Empty', 0, 0); ?> - -
+
+

getHtml('Accounts'); ?>

+
+
+ + +
+
+
+
+
+
+
+
-
-

getHtml('Permissions'); ?>

-
-
- +
+
+ + + + - +
getHtml('Permissions') ?>
+ + getHtml('ID', 0, 0); ?> + Unit + App + Module + Type + Ele. + Comp. + Perm.
-
-
+ $value) : $c++; $permission = $value->getPermission(); ?> +
+ + getId(); ?> + getUnit(); ?> + getApp(); ?> + getModule(); ?> + getType(); ?> + getElement(); ?> + getComponent(); ?> + + + + + + + + +
getHtml('Empty', 0, 0); ?> +
-
+ +
+

getHtml('Permissions'); ?>

+
+
+ + +
+
+
+
+
+
+
+
- +
+ + +
+
+
+ + + + + + $value) : $c++; ?> + +
getHtml('AuditLog') ?>
getHtml('ID', 0, 0); ?> + Name +
+ + + + +
getHtml('Empty', 0, 0); ?> + +
+
+
+
\ No newline at end of file diff --git a/Theme/Backend/settings-general.tpl.php b/Theme/Backend/settings-general.tpl.php index aaf9307..9db3ec0 100644 --- a/Theme/Backend/settings-general.tpl.php +++ b/Theme/Backend/settings-general.tpl.php @@ -24,11 +24,12 @@ $_thousands_sep = $this->getData('thousands_sep') ?? ''; $_password = $this->getData('password') ?? ''; $_country = $this->getData('country') ?? ''; -$countries = \phpOMS\Localization\ISO3166NameEnum::getConstants(); -$timezones = \phpOMS\Localization\TimeZoneEnumArray::getConstants(); -$timeformats = \phpOMS\Localization\ISO8601EnumArray::getConstants(); -$languages = \phpOMS\Localization\ISO639Enum::getConstants(); -$currencies = \phpOMS\Localization\ISO4217Enum::getConstants(); +$countries = \phpOMS\Localization\ISO3166NameEnum::getConstants(); +$timezones = \phpOMS\Localization\TimeZoneEnumArray::getConstants(); +$timeformats = \phpOMS\Localization\ISO8601EnumArray::getConstants(); +$languages = \phpOMS\Localization\ISO639Enum::getConstants(); +$currencies = \phpOMS\Localization\ISO4217Enum::getConstants(); +$l11nDefinitions = \phpOMS\System\File\Local\Directory::list(__DIR__ . '/../../../../phpOMS/Localization/Defaults/Definitions'); ?>
@@ -51,8 +52,61 @@ $currencies = \phpOMS\Localization\ISO4217Enum::getConstants(); - + + + +
+ +
+ +
+
+

getHtml('Security'); ?>

+
+
+ + +
+ + getHtml('i:PasswordRegex') ?>
+
+ + getHtml('i:LoginRetries') ?> +
+
+ + getHtml('i:TimeoutPeriod') ?> +
+
+ + getHtml('i:PasswordChangeInterval') ?> +
+
+ + getHtml('i:PasswordHistory') ?> +
+
+
+
+
+
+
+ +
+
+

getHtml('Logging'); ?>

+
+
+ + +
+ + + + +
+
@@ -71,6 +125,18 @@ $currencies = \phpOMS\Localization\ISO4217Enum::getConstants();
+
+
+
+
+
+
+
-
-
- +
+
+ +

getHtml('Numberformat'); ?>

+
+ +
+ +
+ + + + + +
+
+

getHtml('Weight'); ?>

+
+
+ + +
+
-

getHtml('Numberformat'); ?>

-
- -
- -
-
-
-
-
- -
-
-

getHtml('Weight'); ?>

-
-
- - - - - - - - - - - - -
-
+
+
+
+
+
+
+
+
+
+ + + - -
-
-

getHtml('Speed'); ?>

-
-
- - - - - - - - - - - - - - -
-
+
+

getHtml('Speed'); ?>

+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-

getHtml('Length'); ?>

-
-
- - - - - - - - - - - - - - -
-
+
+
+

getHtml('Length'); ?>

+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-

getHtml('Area'); ?>

-
-
- - - - - - - - - - - - -
-
+
+
+

getHtml('Area'); ?>

+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-

getHtml('Volume'); ?>

-
-
- - - - - - - - - - - - - - - - - - -
-
+
+

getHtml('Volume'); ?>

+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-