check session and login in authorize request
[authserver.git] / 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
23require_once('../kairo/include/cbsm/util/document.php-class');
b19743bc
RK
24// Class for sending emails
25require_once('../kairo/include/classes/email.php-class');
d46a42f1
RK
26// Class for sending emails
27require_once(__DIR__.'/authutils.php-class');
133aecbe
RK
28
29bindtextdomain('kairo_auth', 'en'); // XXX: Should negotiate locale.
30bind_textdomain_codeset('kairo_auth', 'utf-8');
31
d26d08a1
RK
32// Connect to our MySQL DB
33$db = new PDO($dbdata['dsn'], $dbdata['username'], $dbdata['password']);
558e9862
RK
34// Instantiate auth utils.
35$utils = new AuthUtils($settings, $db);
d26d08a1
RK
36
37/* Creating the DB tables:
d46a42f1
RK
38CREATE TABLE `auth_sessions` (
39 `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
40 `sesskey` VARCHAR(150) NOT NULL DEFAULT '' ,
41 `user` MEDIUMINT UNSIGNED NULL DEFAULT NULL ,
42 `logged_in` BOOLEAN NOT NULL DEFAULT FALSE ,
43 `time_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
44 `time_expire` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
45 PRIMARY KEY (`id`),
46 INDEX (`sesskey`),
47 INDEX (`time_expire`)
48);
49CREATE TABLE `auth_users` (
50 `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT ,
51 `email` VARCHAR(255) NOT NULL ,
52 `pwdhash` VARCHAR(255) NOT NULL ,
53 `status` ENUM('unverified','ok') NOT NULL DEFAULT 'unverified' ,
54 `verify_hash` VARCHAR(150) NULL DEFAULT NULL ,
55 PRIMARY KEY (`id`),
56 UNIQUE (`email`)
57);
558e9862
RK
58CREATE TABLE `auth_log` (
59 `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
60 `code` VARCHAR(100) NOT NULL ,
61 `info` TEXT NULL DEFAULT NULL ,
62 `ip_addr` VARCHAR(50) NULL DEFAULT NULL ,
63 `time_logged` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
64 PRIMARY KEY (`id`),
65 INDEX (`time_logged`)
66);
d26d08a1
RK
67*/
68
133aecbe
RK
69// include our OAuth2 Server object
70require_once(__DIR__.'/server.inc.php');
71?>