9 * @author Christian Weiske <cweiske@cweiske.de>
10 * @copyright 2014 Christian Weiske
11 * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3
12 * @link http://cweiske.de/grauphel.htm
14 namespace OCA\Grauphel\Controller;
16 use \OCP\AppFramework\Controller;
17 use \OCP\AppFramework\Http\RedirectResponse;
18 use \OCA\Grauphel\Lib\Dependencies;
19 use \OCA\Grauphel\Lib\OAuthException;
20 use \OCA\Grauphel\Lib\Response\ErrorResponse;
21 use \OCA\Grauphel\Lib\TokenStorage;
24 * OAuth token management
28 * @author Christian Weiske <cweiske@cweiske.de>
29 * @copyright 2014 Christian Weiske
30 * @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3
31 * @version Release: @package_version@
32 * @link http://cweiske.de/grauphel.htm
34 class TokenController extends Controller
37 * constructor of the controller
39 * @param string $appName Name of the app
40 * @param IRequest $request Instance of the request
42 public function __construct($appName, \OCP\IRequest $request, $user)
44 parent::__construct($appName, $request);
46 $this->deps = Dependencies::get();
48 //default http header: we assume something is broken
49 header('HTTP/1.0 500 Internal Server Error');
54 * Delete an access token
55 * DELETE /tokens/$username/$tokenKey
60 public function delete($username, $tokenKey)
62 if (false && ($this->user === null || $this->user->getUid() != $username)) {
63 $res = new ErrorResponse('You may only delete your own tokens.');
64 $res->setStatus(\OCP\AppFramework\Http::STATUS_FORBIDDEN);
68 $deps = Dependencies::get();
70 $token = $deps->tokens->load('access', $tokenKey);
71 } catch (OAuthException $e) {
72 $res = new ErrorResponse('Token not found.');
73 $res->setStatus(\OCP\AppFramework\Http::STATUS_NOT_FOUND);
77 if ($username != $token->user) {
78 $res = new ErrorResponse('You may only delete your own tokens.');
79 $res->setStatus(\OCP\AppFramework\Http::STATUS_FORBIDDEN);
83 $deps->tokens->delete('access', $tokenKey);
85 $res = new \OCP\AppFramework\Http\Response();
86 $res->setStatus(\OCP\AppFramework\Http::STATUS_NO_CONTENT);
91 * Delete an access token via POST
92 * POST /tokens/$username/$tokenKey
97 public function deletePost($username, $tokenKey)
99 if (isset($_POST['delete']) && $_POST['delete'] == 1) {
100 $this->delete($username, $tokenKey);
103 $res = new RedirectResponse(
104 $this->deps->urlGen->getAbsoluteURL(
105 $this->deps->urlGen->linkToRoute('grauphel.gui.tokens')
108 $res->setStatus(\OCP\AppFramework\Http::STATUS_FOUND);