public static function getJwt($uid = 1) { Auth::CreateJwtKey(); $key = RedBeanPHP\R::load('jwt', 1); $jwt = Firebase\JWT\JWT::encode(array('exp' => time() + 60 * 90, 'uid' => $uid, 'mul' => 1), $key->secret); return $jwt; }
static function authenticate($headers) { $jwt = ""; foreach ($headers as $header => $value) { if ($header == "Authorization") { $head = explode(" ", $value); if (count($head) == 2) { if ($head[0] == "Bearer") { $jwt = $head[1]; } } } } if ($jwt == "") { return false; } try { $secretKey = base64_decode(Flight::get("jwtkey")); $token = Firebase\JWT\JWT::decode($jwt, $secretKey, array("HS512")); return $token; } catch (Exception $e) { return false; } }
* * Nothing really special here. A simple snippet to check the license code. * It's simple to hack. But please consider supporting this project by * buying a license instead. Be awesome. * * Anyway, have fun using Copilot! * * Greets * Artur * */ $license = ['type' => 'trial']; $code = (string) $this->app['copilot.license']; $data = []; try { $data = (array) Firebase\JWT\JWT::decode($code, 'copilot', ['HS256']); } catch (Exception $e) { } if (isset($data['name'], $data['company'], $data['created'], $data['email'], $data['type'])) { $license = $data; $license['code'] = $code; } return (object) $license; }]); // REST if (COCKPIT_REST) { $app->on('cockpit.rest.init', function ($routes) { $routes['copilot'] = 'Copilot\\Controller\\RestApi'; }); } // ADMIN
/** * Make the Jason API call to the backend via http */ private function make_jason_http_request($data) { // use key 'http' even if you send the request to https://... $options = array('http' => array('header' => "Content-type: application/json\r\n", 'method' => 'POST', 'content' => json_encode($data))); $context = stream_context_create($options); $result = file_get_contents(get_option('api_uri'), false, $context); $keyArray = $this->get_key(); // extract the key $modulus = $keyArray['keys'][0]['n']; $exponent = $keyArray['keys'][0]['e']; $rsa = new phpseclib\Crypt\RSA(); $modulus = new \phpseclib\Math\BigInteger(Firebase\JWT\JWT::urlsafeB64Decode($modulus), 256); $exponent = new \phpseclib\Math\BigInteger(Firebase\JWT\JWT::urlsafeB64Decode($exponent), 256); $rsa->load(array('n' => $modulus, 'e' => $exponent)); $rsa->setPublicKey(); $pubKey = $rsa->getPublicKey(); $decodedResult = $this->decode_jwt($result, $pubKey); return array($decodedResult, $result); }
/** * Find a user record. * * @param string $username The token identifier. * @param string $password Unused password. * @return Mixed Either false on failure, or an array of user data. */ public function _findUser($username, $password = null) { try { $decoded = Firebase\JWT\JWT::decode($username, Configure::read('Security.salt'), array('HS256')); return json_decode(json_encode($decoded), true); } catch (UnexpectedValueException $e) { return false; } }
// Register Entity Manager in the container $container['entityManager'] = function () { $conf = parse_ini_file('../conf/conf.db.ini', true); $doctrineSettings = ['connection' => ['driver' => $conf['database']['driver'], 'host' => $conf['database']['host'], 'port' => isset($conf['database']['port']) ? $conf['database']['port'] : '3306', 'user' => $conf['database']['user'], 'password' => $conf['database']['password'], 'dbname' => $conf['database']['db'], 'charset' => 'utf8', 'memory' => true], 'annotation_paths' => ['../Entity/Users.php']]; return EntityManagerBuilder::build($doctrineSettings); }; $app->add(new \Slim\Middleware\JwtAuthentication(["path" => "/api", "secret" => "supersecretkeyyoushouldnotcommittogithub"])); $app->get('/', function (Request $request, Response $response) { $result = $this->entityManager->createQueryBuilder()->select('user.email, user.password, user.token')->from('Users', 'user')->getQuery()->getArrayResult(); return json_encode($result); }); $app->get('/api', function (Request $request, Response $response) { getStats($request, $response); }); $app->get('/login', function (Request $request, Response $response) { $result = Firebase\JWT\JWT::encode("ramdont0k3n", "supersecretkeyyoushouldnotcommittogithub"); $body = $response->getBody(); $body->write(json_encode($result)); return $response; }); $app->run(); function getStats($request, $response) { //$response = $app->response; $response->withHeader('Access-Control-Allow-Origin', '*'); $response->withHeader('Access-Control-Allow-Headers', 'Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With'); $response->withHeader('Access-Control-Allow-Credentials', 'true'); $response->withHeader('Cache-Control', 'no-cache'); $response->withHeader('Content-Type', 'application/json; charset=utf-8'); $result = array(array('producto' => 'maxideli', 'version' => '3.0', 'icon' => 'base64', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'actualizado' => 1, 'tabs' => array(array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('totales' => array('total' => 120)))), array('producto' => 'maxipad', 'version' => '2.0', 'icon' => 'base64', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'actualizado' => 1, 'tabs' => array(array('dispositivos' => array(array('id' => 123, 'nombre' => 'dispositivo 1'), array('id' => 456, 'nombre' => 'dispositivo 2'))))), array('producto' => 'maxikds', 'version' => '1.0', 'icon' => 'base64', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'actualizado' => 1, 'tabs' => array(array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('totales' => array('total' => 120)))), array('producto' => 'reservas', 'version' => '1.0', 'icon' => 'base64', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'actualizado' => 0, 'tabs' => array(array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('totales' => array('total' => 120)))), array('producto' => 'menuweb', 'version' => '1.0', 'icon' => 'base64', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'actualizado' => 1, 'tabs' => array(array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('totales' => array('total' => 120)))), array('producto' => 'maxideli', 'version' => '3.0', 'icon' => 'base64', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'actualizado' => 1, 'tabs' => array(array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('totales' => array('total' => 120)))), array('producto' => 'maxideli', 'version' => '3.0', 'icon' => 'base64', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'actualizado' => 1, 'tabs' => array(array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('totales' => array('total' => 120)))), array('producto' => 'menuweb', 'version' => '1.0', 'icon' => 'base64', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'actualizado' => 1, 'tabs' => array(array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('monitor' => array('pendientes' => 254, 'elaboracion' => 1542, 'entregados' => 145, 'postdatados' => 20)), array('totales' => array('total' => 120)))), array('producto' => 'clientes', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'administracion' => array(array('facturas_pendientes' => 1, 'vencimiento' => '25/05/2015')), 'capacitaciones' => array(), 'soporte' => array()), array('producto' => 'notificaciones', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'notificaciones' => array(array('id' => 1, 'notificacion' => 'notificacion 1'), array('id' => 2, 'notificacion' => 'notificacion 2'), array('id' => 3, 'notificacion' => 'notificacion 3'))), array('producto' => 'usuarios', 'activo' => 1, 'estilos' => array('ancho' => 1, 'orden' => 1), 'notificaciones' => array(array('id' => 1, 'nombre' => 'usuario 1'), array('id' => 2, 'nombre' => 'usuario 2'), array('id' => 3, 'nombre' => 'usuario 3')))); $body = $response->getBody();