|   1:  | <?php | 
|   2:  |  | 
|   3:  |  | 
|   4:  |  | 
|   5:  |  | 
|   6:  |  | 
|   7:  |  | 
|   8:  | namespace Aurora\Modules\Core; | 
|   9:  |  | 
|  10:  | use Aurora\System\SettingsProperty; | 
|  11:  | use Aurora\System\Enums; | 
|  12:  |  | 
|  13:  |  | 
|  14:  |  | 
|  15:  |  | 
|  16:  |  | 
|  17:  |  | 
|  18:  |  | 
|  19:  |  | 
|  20:  |  | 
|  21:  |  | 
|  22:  |  | 
|  23:  |  | 
|  24:  |  | 
|  25:  |  | 
|  26:  |  | 
|  27:  |  | 
|  28:  |  | 
|  29:  |  | 
|  30:  |  | 
|  31:  |  | 
|  32:  |  | 
|  33:  |  | 
|  34:  |  | 
|  35:  |  | 
|  36:  |  | 
|  37:  |  | 
|  38:  |  | 
|  39:  |  | 
|  40:  |  | 
|  41:  |  | 
|  42:  | class Settings extends \Aurora\System\Module\Settings | 
|  43:  | { | 
|  44:  |     protected function initDefaults() | 
|  45:  |     { | 
|  46:  |         $this->aContainer = [ | 
|  47:  |             'Disabled' => new SettingsProperty( | 
|  48:  |                 false, | 
|  49:  |                 'bool', | 
|  50:  |                 null, | 
|  51:  |                 'Setting to true disables the module' | 
|  52:  |             ), | 
|  53:  |             'AllowCapa' => new SettingsProperty( | 
|  54:  |                 false, | 
|  55:  |                 'bool', | 
|  56:  |                 null, | 
|  57:  |                 'If set to true, product features can be enabled/disabled on user or tenant level' | 
|  58:  |             ), | 
|  59:  |             'AllowPostLogin' =>  new SettingsProperty( | 
|  60:  |                 false, | 
|  61:  |                 'bool', | 
|  62:  |                 null, | 
|  63:  |                 'If set to true, credentials can be submitted via POST request' | 
|  64:  |             ), | 
|  65:  |             'CsrfTokenProtection' => new SettingsProperty( | 
|  66:  |                 true, | 
|  67:  |                 'bool', | 
|  68:  |                 null, | 
|  69:  |                 'If set to true, CSRF protection is enabled' | 
|  70:  |             ), | 
|  71:  |             'CronTimeToRunSeconds' => new SettingsProperty( | 
|  72:  |                 10800, | 
|  73:  |                 'int', | 
|  74:  |                 null, | 
|  75:  |                 'Defines intervals in seconds to run a routine of deleting temporary files' | 
|  76:  |             ), | 
|  77:  |             'CronTimeToKillSeconds' => new SettingsProperty( | 
|  78:  |                 10800, | 
|  79:  |                 'int', | 
|  80:  |                 null, | 
|  81:  |                 'Defines minimal age in seconds of temporary files to be deleted' | 
|  82:  |             ), | 
|  83:  |             'CronTimeFile' => new SettingsProperty( | 
|  84:  |                 '.clear.dat', | 
|  85:  |                 'string', | 
|  86:  |                 null, | 
|  87:  |                 'Defines filename for storing last timestamp when routine of deleting temporary files was run' | 
|  88:  |             ), | 
|  89:  |             'UserSelectsDateFormat' => new SettingsProperty( | 
|  90:  |                 false, | 
|  91:  |                 'bool', | 
|  92:  |                 null, | 
|  93:  |                 'If set to true, users can select date format' | 
|  94:  |             ), | 
|  95:  |             'DateFormat' => new SettingsProperty( | 
|  96:  |                 Enums\DateFormat::DDMMYYYY, | 
|  97:  |                 'spec', | 
|  98:  |                 Enums\DateFormat::class, | 
|  99:  |                 'Defines default date format used' | 
| 100:  |             ), | 
| 101:  |             'DateFormatList' => new SettingsProperty( | 
| 102:  |                 [Enums\DateFormat::DDMMYYYY, Enums\DateFormat::MMDDYYYY, Enums\DateFormat::DD_MONTH_YYYY], | 
| 103:  |                 'array', | 
| 104:  |                 null, | 
| 105:  |                 'Defines default date format used' | 
| 106:  |             ), | 
| 107:  |             'LanguageList' => new SettingsProperty( | 
| 108:  |                 [], | 
| 109:  |                 'array', | 
| 110:  |                 null, | 
| 111:  |                 'Empty array means that every language from every module will be available. [\"English\", \"German\"] means that only English and German languages will be used in the system.' | 
| 112:  |             ), | 
| 113:  |             'LanguageListComment' => new SettingsProperty( | 
| 114:  |                 '', | 
| 115:  |                 'string', | 
| 116:  |                 null, | 
| 117:  |                 'Empty array means that every language from every module will be available. [\"English\", \"German\"] means that only English and German languages will be used in the system.' | 
| 118:  |             ), | 
| 119:  |             'Language' => new SettingsProperty( | 
| 120:  |                 '', | 
| 121:  |                 'string', | 
| 122:  |                 null, | 
| 123:  |                 'Default interface language used' | 
| 124:  |             ), | 
| 125:  |             'AutodetectLanguage' => new SettingsProperty( | 
| 126:  |                 true, | 
| 127:  |                 'bool', | 
| 128:  |                 null, | 
| 129:  |                 'Setting to true enables language autodetection' | 
| 130:  |             ), | 
| 131:  |             'PostLoginErrorRedirectUrl' => new SettingsProperty( | 
| 132:  |                 './', | 
| 133:  |                 'string', | 
| 134:  |                 null, | 
| 135:  |                 'If login credentials were supplied with POST method, this setting defines redirect URL used when authentication error occurs' | 
| 136:  |             ), | 
| 137:  |             'TimeFormat' => new SettingsProperty( | 
| 138:  |                 Enums\TimeFormat::F24, | 
| 139:  |                 'spec', | 
| 140:  |                 Enums\TimeFormat::class, | 
| 141:  |                 'Denotes time format used by default' | 
| 142:  |             ), | 
| 143:  |             'SiteName' => new SettingsProperty( | 
| 144:  |                 '', | 
| 145:  |                 'string', | 
| 146:  |                 null, | 
| 147:  |                 'Text used in browser title as a website name' | 
| 148:  |             ), | 
| 149:  |             'ProductName' => new SettingsProperty( | 
| 150:  |                 'Unknown', | 
| 151:  |                 'string', | 
| 152:  |                 null, | 
| 153:  |                 'Product name, displayed in About tab of adminpanel' | 
| 154:  |             ), | 
| 155:  |             'AuthTokenCookieExpireTime' => new SettingsProperty( | 
| 156:  |                 30, | 
| 157:  |                 'int', | 
| 158:  |                 null, | 
| 159:  |                 'Expiration time for authentication cookie, in days' | 
| 160:  |             ), | 
| 161:  |             'EnableFailedLoginBlock' => new SettingsProperty( | 
| 162:  |                 false, | 
| 163:  |                 'bool', | 
| 164:  |                 null, | 
| 165:  |                 'Setting to true enables feature of blocking user after a number of failed login attempts' | 
| 166:  |             ), | 
| 167:  |             'LoginBlockAvailableTriesCount' => new SettingsProperty( | 
| 168:  |                 10, | 
| 169:  |                 'int', | 
| 170:  |                 null, | 
| 171:  |                 'Number of failed login attempts which will result in blocking user' | 
| 172:  |             ), | 
| 173:  |             'LoginBlockDurationMinutes' => new SettingsProperty( | 
| 174:  |                 3, | 
| 175:  |                 'int', | 
| 176:  |                 null, | 
| 177:  |                 'Number of minutes user will be blocked for upon multiple failed login attempts' | 
| 178:  |             ), | 
| 179:  |             'LoginBlockIpReputationThreshold ' => new SettingsProperty( | 
| 180:  |                 0, | 
| 181:  |                 'int', | 
| 182:  |                 null, | 
| 183:  |                 'The setting determines the number of different users that need to be blocked from a specific IP address before that IP is considered to have a bad reputation and blocks any further login attempts from it.' | 
| 184:  |             ), | 
| 185:  |             'AllowGroups' => new SettingsProperty( | 
| 186:  |                 false, | 
| 187:  |                 'bool', | 
| 188:  |                 null, | 
| 189:  |                 'Setting to true enables user groups which can be managed in adminpanel' | 
| 190:  |             ), | 
| 191:  |             'CookieSameSite' => new SettingsProperty( | 
| 192:  |                 'Strict', | 
| 193:  |                 'string', | 
| 194:  |                 null, | 
| 195:  |                 'Sets the SameSite value of system cookies such as AuthToken cookie. Possible values: None, Lax, or Strict' | 
| 196:  |             ), | 
| 197:  |         ]; | 
| 198:  |     } | 
| 199:  | } | 
| 200:  |  |