This repository has been archived on 2018-05-28. You can view files and clone it, but cannot push or open issues or pull requests.
BBB-Simple-ACS/server/src/Controller/Client.php

59 lines
1.5 KiB
PHP

<?php
namespace acs\Controller;
use Acast\Http\Config;
use Acast\Http\Controller;
use Acast\Http\Router;
class Client extends Controller
{
/**
* @var \acs\View\Client
*/
protected $view;
/**
* @var \acs\Model\Client
*/
protected $model;
protected $id;
protected $key;
function __construct(Router $router)
{
parent::__construct($router);
$this->id = intval($this->params['id']);
$this->key = strval($this->params['key']);
}
function tick()
{
if ($this->id < 1 || empty($this->key)) {
$this->view->retJson('Bad request.', -1, 400);
return;
}
$result = $this->model->fetchById($this->id);
if (!$result || $result['key'] != $this->key) {
$this->view->retJson('Invalid credentials.', 1, 403);
return;
}
$token = '';
$expired = time() > $result['updated'] + Config::get('EXPIRY_TIME');
// No token yet; Token expired; Token used.
if ($result['token'] == '' || $expired || $result['stunum'] != '') {
$token = strtr(base64_encode(random_bytes(15)), '+/', '-_');
if (!$this->model->updateToken($this->id, $token)) {
$this->view->retJson('Failed to update token', -3, 500);
return;
}
}
$stunum = strval($result['stunum']);
$this->view->retJson([
'token' => $token,
'stunum' => $stunum
]);
}
}