diff options
| author | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-03-26 04:50:46 +0300 |
|---|---|---|
| committer | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-03-26 04:50:46 +0300 |
| commit | 21fedb3af692b12c1f0aa266bbf788b01f2cbe4c (patch) | |
| tree | e600e16a2894407eba840e7694a4f290669e31d8 /core/config/anom_settings.php | |
| parent | d90b51ce89bcc693e3014b313fe8e3b975031adf (diff) | |
| download | classroom-21fedb3af692b12c1f0aa266bbf788b01f2cbe4c.tar.gz classroom-21fedb3af692b12c1f0aa266bbf788b01f2cbe4c.tar.bz2 classroom-21fedb3af692b12c1f0aa266bbf788b01f2cbe4c.zip | |
auth tests
Diffstat (limited to 'core/config/anom_settings.php')
| -rw-r--r-- | core/config/anom_settings.php | 312 |
1 files changed, 234 insertions, 78 deletions
diff --git a/core/config/anom_settings.php b/core/config/anom_settings.php index 406c6aa..76c7c62 100644 --- a/core/config/anom_settings.php +++ b/core/config/anom_settings.php @@ -1,35 +1,37 @@ <?php + /** CONFIGURATION PATAMETRES - * --- + * ----------------------------------------------------------------------------- * This is the first file you need to setup * in order to start a new application + * + * NOTE: + * You may rewrite the defines manualy setting any values manualy + * Here we propose that you use an .env file (with is a very safe option) + * the env file is saved into `/core/auth` folder */ +if (file_exists("../core/auth/.env")) { + $ini_array = parse_ini_file("../core/auth/.env"); +} + // DEFINE WHETTHER THE APP RUNS ON PRODUCTION // Don't forget to change this setting // when deploying to a different stage // ----------------------------------------------------------------------------- -// define by OS parameter -//// if (getenv('ENVIRONMENT')) { -//// if (getenv('ENVIRONMENT') == 'PRODUCTION') { -//// -//// define('PRODUCTION', true); -//// -//// } else { -//// define('PRODUCTION', false); -//// } -//// } -//// // define by .env file -//// if (!defined('PRODUCTION')) { -//// if (file_exists('../core/auth/.env')) { -//// $ini_array = parse_ini_file("../core/auth/.env"); -//// -//// define('PRODUCTION', $ini_array['ENVIRONMENT']); -//// } -//// } else { -//// define('PRODUCTION', false); // or define manualy -//// } -define('PRODUCTION', false); + +# // define by OS parameter +# if (getenv('ENVIRONMENT')) { +# if (getenv('ENVIRONMENT') == 'PRODUCTION') { +# define('PRODUCTION', true); +# } else { +# define('PRODUCTION', false); +# } +# } + +# define by .env file +define('PRODUCTION', ($ini_array['ENVIRONMENT'] == 'production') ); + // Custom Names //////////////////////////////////////////////////////////////// @@ -43,15 +45,17 @@ define('SESSION_NAME', 'clroom'); // Session Name -// APPLICATION PATHS /////////////////////////////////////////////////////////// -// ----------------------------------------------------------------------------- - -// Obligarory -// These are needed in order to run the bare minimum MVC system -// They also make code easier to read -// -// NOTE: probably you don't need to chage these defines -// ----------------------------------------------------------------------------- +/** APPLICATION PATHS /////////////////////////////////////////////////////////// + * ----------------------------------------------------------------------------- + * + * Obligarory + * These are needed in order to run the bare minimum MVC system + * They also make code easier to read + * + * NOTE: + * probably you don't need to chage these defines + * ----------------------------------------------------------------------------- + */ define('APP_ROOT', dirname(get_included_files()[0]) ); @@ -68,22 +72,28 @@ define('VIEWS_DIRECTORY', APP_ROOT.'/app/views/'); define('TESTS_DIRECTORY', APP_ROOT."/../tests/"); -// AUTOLOADER ////////////////////////////////////////////////////////////////// -// ----------------------------------------------------------------------------- - -// An autoloader for classes is required; -// OPTION 1: COMPOSER -// Composer is recommended and makes much more than simple autoloding +/** AUTOLOADER ///////////////////////////////////////////////////////////////// + * ----------------------------------------------------------------------------- + * An autoloader for classes is required; + * + * + * OPTION 1: COMPOSER + * Composer is recommended and makes much more than simple autoloding + */ define('AUTOLOADER' , '../vendor/autoload.php'); -// OPTION 2: Custom Autoloader -// If Composer is not supported, another autoloading proccess required -// Comment/Disable the 1st option and uncomment/Enable the next line +/** ... + * + * OPTION 2: Custom Autoloader + * If Composer is not supported, another autoloading proccess required + * Comment/Disable the 1st option and uncomment/Enable the next line + */ # define('AUTOLOADER' , '../core/helpers/autoload.php'); -// CLASSPATHS : array of paths where classes are saved -// Needed only when the custom autoloader is used -// (like autoload.classmap section of Composer) +/** CLASSPATHS : array of paths where classes are saved + * Needed only when the custom autoloader is used + * (like autoload.classmap section of Composer) + */ # define('CLASSPATHS', array( # '/../core/classes/', # '/app/controllers/', @@ -94,27 +104,45 @@ define('AUTOLOADER' , '../vendor/autoload.php'); -// ADVANCED OPTIMIZATION /////////////////////////////////////////////////////// -// ----------------------------------------------------------------------------- - -// APP_CACHE defines the cache-driver; -// accepted values are the name of the Cache-interface impementations (the exact -// names of the classes) -// -// 'FileCache' : caching in filesystem; fair if caching on HDD; great on SSD -// 'RedisCache' : caching in Redis server; generally recommended if available -// 'MemCachedCache' : caching in Memcached server; recommended if available -// -// NOTE: FileCache on a NVMe SDD is the fastest option; -// Redis and Memcached are really-fast caching options and are available for -// scaling horizontaly your application (eache one has it's own strngths; -// study, then choose the one that fulfills your needs; -// ----------------------------------------------------------------------------- + /** SESSION HANDLING ////////////////////////////////////////////////////////// + * ---------------------------------------------------------------------------- + * + * there are several session drivers for session handling: + * + * 'DefaultSession' : uses the default (file-based) php session management + * 'FileSession' : defines a custom file-based session mechanism + * 'DatabaseSession' : mechanism that stores Session data into a DataBase + * ---------------------------------------------------------------------------- + */ + +define('SESSION_DRIVER', 'DefaultSession'); + + + +/* ADVANCED OPTIMIZATION /////////////////////////////////////////////////////// + * ----------------------------------------------------------------------------- + * + * APP_CACHE defines the cache-driver; + * accepted values are the name of the Cache-interface impementations (the exact + * names of the classes) + * + * 'FileCache' : caching in filesystem; fair if caching on HDD; great on SSD + * 'RedisCache' : caching in Redis server; generally recommended if available + * 'MemCachedCache' : caching in Memcached server; recommended if available + * + * NOTE: FileCache on a NVMe SDD is the fastest option; + * Redis and Memcached are really-fast caching options and are available for + * scaling horizontaly your application (eache one has it's own strngths; + * study, then choose the one that fulfills your needs; + * ----------------------------------------------------------------------------- + */ define('CACHE_DRIVER', 'FileCache'); -// Caching expiration times fpr various expensive objects -// ----------------------------------------------------------------------------- + +/** Caching expiration times fpr various expensive objects + * ----------------------------------------------------------------------------- + */ // Root objects like product-categories tree define('CACHE_ROOT_TTL', 28800); // 8 hours @@ -126,17 +154,11 @@ define('CACHE_CATEGORY_TTL', 18000); // 5 hours define('CACHE_PRODUCT_TTL', 3600); // 1 hour -// SESSION_DRIVER ; accepted values... -// 'files' : (defult) php uses filesystem for saving session; fair if caching in SSD drive -// 'redis' : keep sessions in a Redis server; rapid-fast but wastes large amount of RAM -// 'database' : keep session data in Database; ideal for session across multiple servers -// ----------------------------------------------------------------------------- -define('SESSION_DRIVER', 'files'); // CONNECTIONS ... -define('FILECACHE_PATH', APP_ROOT.'/cache/'); // if CACHE_DRIVER is set to 'FileCache' +define('FILECACHE_PATH', APP_ROOT.'/cache/'); // if CACHE_DRIVER is set to 'FileCache' # define('REDIS_HOST', '127.0.0.1'); // if CACHE_DRIVER is set to 'RedisCache' @@ -144,16 +166,16 @@ define('FILECACHE_PATH', APP_ROOT.'/cache/'); // if CACHE_DRIVER is set to 'Fi - -// SECURITY SETTINGS /////////////////////////////////////////////////////////// -// ----------------------------------------------------------------------------- - -// Cross Site Request Forgery -// --- -// Enables a CSRF cookie token to be set. When set to TRUE, token will be -// checked on a submitted form. If you are accepting user data, it is strongly -// recommended CSRF protection be enabled. -// ----------------------------------------------------------------------------- +/** SECURITY SETTINGS /////////////////////////////////////////////////////////// + * ----------------------------------------------------------------------------- + * + * Cross Site Request Forgery + * --- + * Enables a CSRF cookie token to be set. When set to TRUE, token will be + * checked on a submitted form. If you are accepting user data, it is strongly + * recommended CSRF protection be enabled. + * ----------------------------------------------------------------------------- + */ define('CSRF_PROTCTION', false); @@ -166,3 +188,137 @@ define('CSRF_EXPIRE', 7200); // The number in seconds the token shoul define('CSRF_REGENERATE', TRUE); // Regenerate token on every submission define('CSRF_EXCLUDE_URIS', array()); // Array of URIs which ignore CSRF checks + + + + +/** CREDENTIALS + * ----------------------------------------------------------------------------- + */ + +/** SERVICE PARAMETRES + * ----------------------------------------------------------------------------- + * + * Connection parametres and credentials for accssing services + * needed by the application; Such services may be.. + * + * - RDBMS + * -- MySQL + * -- PotgresSQL + * + * - Caching services + * -- Redis + * -- MemCached + * + * Edit only the constants needed by the application; + * Comment those you do not need; + * + * ///////////////////////////////////////////////////////////////////////////// + */ + +/** DATABASE CONNECTION PARAMETRES + * ----------------------------------------------------------------------------- + * Production and staging environments may use different databases. + * + * A safe practice is to keep credentials outside plain files like this one + * in environmental variable or other secret file etc. + * + * Uncomment/enable each group of definitions suits your case to define + * the credentials needed for accessing the database + */ + +/** This is a SAFE method (define credentials as OS environmental variables) + * ----------------------------------------------------------------------------- + */ +# define('DB_NAME', getenv('DB_NAME')); // database name +# +# define('DB_USER', getenv('DB_USER')); // database user-name +# +# define('DB_PASS', getenv('DB_PASS')); // user's pass +# +# define('PDO_HOST', getenv('PDO_HOST')); // database host (connection string) + + +/** This is another SAFE method (keep credentials in an .env file) + * ----------------------------------------------------------------------------- + */ + + $ini_array = parse_ini_file("../core/auth/.env"); + + define('DB_NAME', $ini_array['DB_NAME']); + + define('DB_USER', $ini_array['DB_USER']); + + define('DB_PASS', $ini_array['DB_PASS']); + + define('PDO_HOST', $ini_array['PDO_HOST']); + + + /** This is just good enough + * ----------------------------------------------------------------------------- + */ + + # if (!PRODUCTION) { // == Deployed on staging + # + # // STAGING SETTINGS: + # + # define('DB_NAME', 'dev_db_name'); + # + # define('DB_USER', 'devUserName'); + # + # define('DB_PASS', getenv('DBPASSWORD')); + # + # // PDO_HOST can be a hostname/port combination -or- a unix socket + # // ...examples: + # // define('PDO_HOST', 'host=/localhost') ## hostname case + # // define('PDO_HOST', 'host=/localhost;port=3456') ## hostname/port case + # // define('PDO_HOST', 'unix_socket=/sql/ex123:europe:some-db'); ## unix socket + # define('PDO_HOST', 'unix_socket=/cloudsql/name-123456:europe-west4:name-db-eu'); + # + # } else { // == Deployed on production + # + # // PRODUCTION SETTINGS: + # + # define('DB_NAME', 'your_db_name'); + # define('DB_USER', 'dbusername'); + # define('DB_PASS', getenv('DBPASSWORD')); + # define('PDO_HOST', 'unix_socket=/cloudsql/name-123456:europe-west4:name-db-eu'); + # + # } + + define('DB_TIMEZONE', "SET time_zone = 'Europe/Athens'"); + + /** NOTE: + * Both Redis and Memcached configurations are given as a template to work on; + * In most cases the default values should do the job -- of course you need to + * read the README file (check the project's root); + * As these caching services are not fully tested you may need to ochestrate + * the services in detail or edit the connection strings into the core classes + * (hosted under the '/core/classes/cacher' folder) + */ + + + /** REDIS SERVICE + * ----------------------------------------------------------------------------- + * Most of the times Redis is running on 'localhost' (host = '127.0.0.1') + * When implemented via anom's docker-composer (redis via bridge) then you need + * do declare the hostname as 'redis' + */ + # + # if (!defined('REDIS_HOST')) define('REDIS_HOST', 'redis'); + # + # if (!defined('REDIS_PORT')) define('REDIS_PORT', 6379); + # + # if (!defined('REDIS_PASS')) define('REDIS_PASS', null); + + + /** MEMCACHED + * ----------------------------------------------------------------------------- + * Memcached looks very much like Redis (plus, both are serving from RAM) + * Usualy Memcashed is running localy so host is 'localhost' ('127.0.0.1') + * If you use the framework's docker-composer implementation then + * the hostname is 'anomemcached' + */ + # + #if (!defined('MEMCACHE_HOST')) define('MEMCACHE_HOST', 'anomemcached'); +
\ No newline at end of file |
