1<?php 2 3namespace dokuwiki\plugin\bez\mdl; 4 5use dokuwiki\plugin\bez\meta\PermissionDeniedException; 6 7class Authentication_tokenFactory extends Factory { 8 9 public function get_token($page_id) { 10 if ($this->model->get_level() < BEZ_AUTH_USER) { 11 throw new PermissionDeniedException(); 12 } 13 14 $r = $this->model->sqlite->query("SELECT token FROM {$this->get_table_name()} WHERE page_id=?", $page_id); 15 $token = $this->model->sqlite->res2single($r); 16 if (!$token) { 17 return $this->create_token($page_id); 18 } 19 return $token; 20 } 21 22 public function create_token($page_id, $expire_date='') { 23 24 if ($this->model->get_level() < BEZ_AUTH_USER) { 25 throw new PermissionDeniedException(); 26 } 27 28 if ($expire_date == '') { 29 $expire_date = date('c', strtotime('+10 years')); 30 } 31 32 $token = bin2hex(openssl_random_pseudo_bytes(16)); 33 $this->model->sqlite->storeEntry($this->get_table_name(), 34 array('page_id' => $page_id, 35 'token' => $token, 36 'generated_by' => $this->model->user_nick, 37 'generation_date' => date('c'), 38 'expire_date' => $expire_date)); 39 40 return $token; 41 } 42}