KaiRo bug 412 - Use composer to load oauth2-server-php and doctrine DBAL
[authserver.git] / app / authsystem.inc.php
CommitLineData
133aecbe 1<?php
d46a42f1
RK
2/* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4 * You can obtain one at http://mozilla.org/MPL/2.0/. */
5
77f0f9ff
RK
6/*
7 Some resources for how to store passwords:
8 - https://blog.mozilla.org/webdev/2012/06/08/lets-talk-about-password-storage/
9 - https://wiki.mozilla.org/WebAppSec/Secure_Coding_Guidelines
10 oauth-server-php: https://bshaffer.github.io/oauth2-server-php-docs/cookbook
11*/
12
133aecbe
RK
13// error reporting (for testing)
14ini_set('display_errors', 1); error_reporting(E_ALL);
15
16// Read DB settings
17$dbdata = json_decode(file_get_contents('/etc/kairo/auth_db.json'), true);
18if (!is_array($dbdata)) { trigger_error('DB configuration not found', E_USER_ERROR); }
087085d6
RK
19$settings = json_decode(file_get_contents('/etc/kairo/auth_settings.json'), true);
20if (!is_array($settings)) { trigger_error('Auth settings not found', E_USER_ERROR); }
133aecbe
RK
21
22// Extended DOM document class
2b9aa8f3 23require_once(__DIR__.'/../php-utility-classes/classes/document.php-class');
b19743bc 24// Class for sending emails
2b9aa8f3
RK
25require_once(__DIR__.'/../php-utility-classes/classes/email.php-class');
26// Composer-provided libraries (oauth2-server-php, doctrine DBAL)
27require_once(__DIR__.'/../vendor/autoload.php');
d26d08a1
RK
28// Connect to our MySQL DB
29$db = new PDO($dbdata['dsn'], $dbdata['username'], $dbdata['password']);
2b9aa8f3
RK
30// Authentication utilities
31require_once(__DIR__.'/authutils.php-class');
32// Instantiate server utils.
33try {
34 $utils = new AuthUtils($settings, $db);
35}
36catch (Exception $e) {
37 $utils = null;
38}
d26d08a1 39
9cab985c
RK
40// This is an array of locale tags in browser style mapping to unix system locale codes to use with gettext.
41$supported_locales = array(
42 'en-US' => 'en_US',
43 'de' => 'de_DE',
44);
45
8b69f29c 46$textdomain = 'kairo_auth';
9cab985c
RK
47$textlocale = $utils->negotiateLocale(array_keys($supported_locales));
48putenv('LC_ALL='.$supported_locales[$textlocale]);
49$selectedlocale = setlocale(LC_ALL, $supported_locales[$textlocale]);
8b69f29c
RK
50bindtextdomain($textdomain, '../locale');
51bind_textdomain_codeset($textdomain, 'utf-8');
52textdomain($textdomain);
53
7be13777
RK
54// Sanitize settings.
55$settings['piwik_enabled'] = (@$settings['piwik_enabled']) ? true : false;
56$settings['piwik_site_id'] = intval(@$settings['piwik_site_id']);
426f76b2
RK
57$settings['piwik_url'] = strlen(@$settings['piwik_url']) ? $settings['piwik_url'] : '/piwik/';
58$settings['piwik_tracker_path'] = strlen(@$settings['piwik_tracker_path']) ? $settings['piwik_tracker_path'] : '../vendor/piwik/piwik-php-tracker/';
7be13777 59
d26d08a1 60/* Creating the DB tables:
d46a42f1
RK
61CREATE TABLE `auth_sessions` (
62 `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
63 `sesskey` VARCHAR(150) NOT NULL DEFAULT '' ,
64 `user` MEDIUMINT UNSIGNED NULL DEFAULT NULL ,
65 `logged_in` BOOLEAN NOT NULL DEFAULT FALSE ,
66 `time_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
67 `time_expire` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
409b55f4 68 `saved_redirect` VARCHAR(255) NOT NULL DEFAULT '' ,
d46a42f1
RK
69 PRIMARY KEY (`id`),
70 INDEX (`sesskey`),
71 INDEX (`time_expire`)
72);
73CREATE TABLE `auth_users` (
74 `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT ,
75 `email` VARCHAR(255) NOT NULL ,
76 `pwdhash` VARCHAR(255) NOT NULL ,
77 `status` ENUM('unverified','ok') NOT NULL DEFAULT 'unverified' ,
78 `verify_hash` VARCHAR(150) NULL DEFAULT NULL ,
60e46184 79 `group_id` MEDIUMINT UNSIGNED DEFAULT '0' ,
d46a42f1
RK
80 PRIMARY KEY (`id`),
81 UNIQUE (`email`)
82);
558e9862
RK
83CREATE TABLE `auth_log` (
84 `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
85 `code` VARCHAR(100) NOT NULL ,
86 `info` TEXT NULL DEFAULT NULL ,
87 `ip_addr` VARCHAR(50) NULL DEFAULT NULL ,
88 `time_logged` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
89 PRIMARY KEY (`id`),
90 INDEX (`time_logged`)
91);
d26d08a1
RK
92*/
93
133aecbe
RK
94// include our OAuth2 Server object
95require_once(__DIR__.'/server.inc.php');
96?>