mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-26 16:52:41 +01:00
Add pagers to server clients and client authorizations in OAuth Server GUI
Summary: ...also make the pager usage in ChatLog use the nice formatWhereClause functionality Test Plan: set $page_size = 2 and paged around the data a bit Reviewers: epriestley Reviewed By: epriestley CC: aran Maniphest Tasks: T905 Differential Revision: https://secure.phabricator.com/D2106
This commit is contained in:
parent
05b4c90bfd
commit
09172a1937
10 changed files with 192 additions and 23 deletions
|
@ -677,6 +677,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorOAuthClientAuthorizationDeleteController' => 'applications/oauthserver/controller/clientauthorization/delete',
|
'PhabricatorOAuthClientAuthorizationDeleteController' => 'applications/oauthserver/controller/clientauthorization/delete',
|
||||||
'PhabricatorOAuthClientAuthorizationEditController' => 'applications/oauthserver/controller/clientauthorization/edit',
|
'PhabricatorOAuthClientAuthorizationEditController' => 'applications/oauthserver/controller/clientauthorization/edit',
|
||||||
'PhabricatorOAuthClientAuthorizationListController' => 'applications/oauthserver/controller/clientauthorization/list',
|
'PhabricatorOAuthClientAuthorizationListController' => 'applications/oauthserver/controller/clientauthorization/list',
|
||||||
|
'PhabricatorOAuthClientAuthorizationQuery' => 'applications/oauthserver/query/clientauthorization',
|
||||||
'PhabricatorOAuthClientBaseController' => 'applications/oauthserver/controller/client/base',
|
'PhabricatorOAuthClientBaseController' => 'applications/oauthserver/controller/client/base',
|
||||||
'PhabricatorOAuthClientDeleteController' => 'applications/oauthserver/controller/client/delete',
|
'PhabricatorOAuthClientDeleteController' => 'applications/oauthserver/controller/client/delete',
|
||||||
'PhabricatorOAuthClientEditController' => 'applications/oauthserver/controller/client/edit',
|
'PhabricatorOAuthClientEditController' => 'applications/oauthserver/controller/client/edit',
|
||||||
|
@ -698,6 +699,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorOAuthServerAuthController' => 'applications/oauthserver/controller/auth',
|
'PhabricatorOAuthServerAuthController' => 'applications/oauthserver/controller/auth',
|
||||||
'PhabricatorOAuthServerAuthorizationCode' => 'applications/oauthserver/storage/authorizationcode',
|
'PhabricatorOAuthServerAuthorizationCode' => 'applications/oauthserver/storage/authorizationcode',
|
||||||
'PhabricatorOAuthServerClient' => 'applications/oauthserver/storage/client',
|
'PhabricatorOAuthServerClient' => 'applications/oauthserver/storage/client',
|
||||||
|
'PhabricatorOAuthServerClientQuery' => 'applications/oauthserver/query/client',
|
||||||
'PhabricatorOAuthServerController' => 'applications/oauthserver/controller/base',
|
'PhabricatorOAuthServerController' => 'applications/oauthserver/controller/base',
|
||||||
'PhabricatorOAuthServerDAO' => 'applications/oauthserver/storage/base',
|
'PhabricatorOAuthServerDAO' => 'applications/oauthserver/storage/base',
|
||||||
'PhabricatorOAuthServerScope' => 'applications/oauthserver/scope',
|
'PhabricatorOAuthServerScope' => 'applications/oauthserver/scope',
|
||||||
|
@ -1510,6 +1512,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorOAuthClientAuthorizationDeleteController' => 'PhabricatorOAuthClientAuthorizationBaseController',
|
'PhabricatorOAuthClientAuthorizationDeleteController' => 'PhabricatorOAuthClientAuthorizationBaseController',
|
||||||
'PhabricatorOAuthClientAuthorizationEditController' => 'PhabricatorOAuthClientAuthorizationBaseController',
|
'PhabricatorOAuthClientAuthorizationEditController' => 'PhabricatorOAuthClientAuthorizationBaseController',
|
||||||
'PhabricatorOAuthClientAuthorizationListController' => 'PhabricatorOAuthClientAuthorizationBaseController',
|
'PhabricatorOAuthClientAuthorizationListController' => 'PhabricatorOAuthClientAuthorizationBaseController',
|
||||||
|
'PhabricatorOAuthClientAuthorizationQuery' => 'PhabricatorOffsetPagedQuery',
|
||||||
'PhabricatorOAuthClientBaseController' => 'PhabricatorOAuthServerController',
|
'PhabricatorOAuthClientBaseController' => 'PhabricatorOAuthServerController',
|
||||||
'PhabricatorOAuthClientDeleteController' => 'PhabricatorOAuthClientBaseController',
|
'PhabricatorOAuthClientDeleteController' => 'PhabricatorOAuthClientBaseController',
|
||||||
'PhabricatorOAuthClientEditController' => 'PhabricatorOAuthClientBaseController',
|
'PhabricatorOAuthClientEditController' => 'PhabricatorOAuthClientBaseController',
|
||||||
|
@ -1529,6 +1532,7 @@ phutil_register_library_map(array(
|
||||||
'PhabricatorOAuthServerAuthController' => 'PhabricatorAuthController',
|
'PhabricatorOAuthServerAuthController' => 'PhabricatorAuthController',
|
||||||
'PhabricatorOAuthServerAuthorizationCode' => 'PhabricatorOAuthServerDAO',
|
'PhabricatorOAuthServerAuthorizationCode' => 'PhabricatorOAuthServerDAO',
|
||||||
'PhabricatorOAuthServerClient' => 'PhabricatorOAuthServerDAO',
|
'PhabricatorOAuthServerClient' => 'PhabricatorOAuthServerDAO',
|
||||||
|
'PhabricatorOAuthServerClientQuery' => 'PhabricatorOffsetPagedQuery',
|
||||||
'PhabricatorOAuthServerController' => 'PhabricatorController',
|
'PhabricatorOAuthServerController' => 'PhabricatorController',
|
||||||
'PhabricatorOAuthServerDAO' => 'PhabricatorLiskDAO',
|
'PhabricatorOAuthServerDAO' => 'PhabricatorLiskDAO',
|
||||||
'PhabricatorOAuthServerTestCase' => 'PhabricatorTestCase',
|
'PhabricatorOAuthServerTestCase' => 'PhabricatorTestCase',
|
||||||
|
|
|
@ -53,12 +53,6 @@ final class PhabricatorChatLogQuery extends PhabricatorOffsetPagedQuery {
|
||||||
$this->channels);
|
$this->channels);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($where) {
|
return $this->formatWhereClause($where);
|
||||||
$where = 'WHERE ('.implode(') AND (', $where).')';
|
|
||||||
} else {
|
|
||||||
$where = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
return $where;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,9 +30,17 @@ extends PhabricatorOAuthClientBaseController {
|
||||||
$title = 'OAuth Clients';
|
$title = 'OAuth Clients';
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$current_user = $request->getUser();
|
$current_user = $request->getUser();
|
||||||
$clients = id(new PhabricatorOAuthServerClient())
|
$offset = $request->getInt('offset', 0);
|
||||||
->loadAllWhere('creatorPHID = %s',
|
$page_size = 100;
|
||||||
$current_user->getPHID());
|
$pager = new AphrontPagerView();
|
||||||
|
$request_uri = $request->getRequestURI();
|
||||||
|
$pager->setURI($request_uri, 'offset');
|
||||||
|
$pager->setPageSize($page_size);
|
||||||
|
$pager->setOffset($offset);
|
||||||
|
|
||||||
|
$query = new PhabricatorOAuthServerClientQuery();
|
||||||
|
$query->withCreatorPHIDs(array($current_user->getPHID()));
|
||||||
|
$clients = $query->executeWithPager($pager);
|
||||||
|
|
||||||
$rows = array();
|
$rows = array();
|
||||||
$rowc = array();
|
$rowc = array();
|
||||||
|
@ -76,8 +84,10 @@ extends PhabricatorOAuthClientBaseController {
|
||||||
$panel = $this->buildClientList($rows, $rowc, $title);
|
$panel = $this->buildClientList($rows, $rowc, $title);
|
||||||
|
|
||||||
return $this->buildStandardPageResponse(
|
return $this->buildStandardPageResponse(
|
||||||
array($this->getNoticeView(),
|
array(
|
||||||
$panel),
|
$this->getNoticeView(),
|
||||||
|
$panel->appendChild($pager)
|
||||||
|
),
|
||||||
array('title' => $title)
|
array('title' => $title)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
|
|
||||||
|
|
||||||
phutil_require_module('phabricator', 'applications/oauthserver/controller/client/base');
|
phutil_require_module('phabricator', 'applications/oauthserver/controller/client/base');
|
||||||
phutil_require_module('phabricator', 'applications/oauthserver/storage/client');
|
phutil_require_module('phabricator', 'applications/oauthserver/query/client');
|
||||||
|
phutil_require_module('phabricator', 'view/control/pager');
|
||||||
phutil_require_module('phabricator', 'view/control/table');
|
phutil_require_module('phabricator', 'view/control/table');
|
||||||
phutil_require_module('phabricator', 'view/form/error');
|
phutil_require_module('phabricator', 'view/form/error');
|
||||||
phutil_require_module('phabricator', 'view/layout/panel');
|
phutil_require_module('phabricator', 'view/layout/panel');
|
||||||
|
|
||||||
phutil_require_module('phutil', 'markup');
|
phutil_require_module('phutil', 'markup');
|
||||||
phutil_require_module('phutil', 'utils');
|
|
||||||
|
|
||||||
|
|
||||||
phutil_require_source('PhabricatorOAuthClientListController.php');
|
phutil_require_source('PhabricatorOAuthClientListController.php');
|
||||||
|
|
|
@ -30,9 +30,17 @@ extends PhabricatorOAuthClientAuthorizationBaseController {
|
||||||
$title = 'OAuth Client Authorizations';
|
$title = 'OAuth Client Authorizations';
|
||||||
$request = $this->getRequest();
|
$request = $this->getRequest();
|
||||||
$current_user = $request->getUser();
|
$current_user = $request->getUser();
|
||||||
$authorizations = id(new PhabricatorOAuthClientAuthorization())
|
$offset = $request->getInt('offset', 0);
|
||||||
->loadAllWhere('userPHID = %s',
|
$page_size = 100;
|
||||||
$current_user->getPHID());
|
$pager = new AphrontPagerView();
|
||||||
|
$request_uri = $request->getRequestURI();
|
||||||
|
$pager->setURI($request_uri, 'offset');
|
||||||
|
$pager->setPageSize($page_size);
|
||||||
|
$pager->setOffset($offset);
|
||||||
|
|
||||||
|
$query = new PhabricatorOAuthClientAuthorizationQuery();
|
||||||
|
$query->withUserPHIDs(array($current_user->getPHID()));
|
||||||
|
$authorizations = $query->executeWithPager($pager);
|
||||||
|
|
||||||
$client_authorizations = mpull($authorizations, null, 'getClientPHID');
|
$client_authorizations = mpull($authorizations, null, 'getClientPHID');
|
||||||
$client_phids = array_keys($client_authorizations);
|
$client_phids = array_keys($client_authorizations);
|
||||||
|
@ -101,8 +109,10 @@ extends PhabricatorOAuthClientAuthorizationBaseController {
|
||||||
$panel = $this->buildClientAuthorizationList($rows, $rowc, $title);
|
$panel = $this->buildClientAuthorizationList($rows, $rowc, $title);
|
||||||
|
|
||||||
return $this->buildStandardPageResponse(
|
return $this->buildStandardPageResponse(
|
||||||
array($this->getNoticeView(),
|
array(
|
||||||
$panel),
|
$this->getNoticeView(),
|
||||||
|
$panel->appendChild($pager),
|
||||||
|
),
|
||||||
array('title' => $title)
|
array('title' => $title)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,10 @@
|
||||||
|
|
||||||
|
|
||||||
phutil_require_module('phabricator', 'applications/oauthserver/controller/clientauthorization/base');
|
phutil_require_module('phabricator', 'applications/oauthserver/controller/clientauthorization/base');
|
||||||
|
phutil_require_module('phabricator', 'applications/oauthserver/query/clientauthorization');
|
||||||
phutil_require_module('phabricator', 'applications/oauthserver/storage/client');
|
phutil_require_module('phabricator', 'applications/oauthserver/storage/client');
|
||||||
phutil_require_module('phabricator', 'applications/oauthserver/storage/clientauthorization');
|
|
||||||
phutil_require_module('phabricator', 'infrastructure/env');
|
phutil_require_module('phabricator', 'infrastructure/env');
|
||||||
|
phutil_require_module('phabricator', 'view/control/pager');
|
||||||
phutil_require_module('phabricator', 'view/control/table');
|
phutil_require_module('phabricator', 'view/control/table');
|
||||||
phutil_require_module('phabricator', 'view/form/error');
|
phutil_require_module('phabricator', 'view/form/error');
|
||||||
phutil_require_module('phabricator', 'view/layout/panel');
|
phutil_require_module('phabricator', 'view/layout/panel');
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2012 Facebook, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
final class PhabricatorOAuthServerClientQuery
|
||||||
|
extends PhabricatorOffsetPagedQuery {
|
||||||
|
private $creatorPHIDs;
|
||||||
|
|
||||||
|
public function withCreatorPHIDs(array $phids) {
|
||||||
|
$this->creatorPHIDs = $phids;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
private function getCreatorPHIDs() {
|
||||||
|
return $this->creatorPHIDs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function execute() {
|
||||||
|
$table = new PhabricatorOAuthServerClient();
|
||||||
|
$conn_r = $table->establishConnection('r');
|
||||||
|
|
||||||
|
$where_clause = $this->buildWhereClause($conn_r);
|
||||||
|
$limit_clause = $this->buildLimitClause($conn_r);
|
||||||
|
|
||||||
|
$data = queryfx_all(
|
||||||
|
$conn_r,
|
||||||
|
'SELECT * FROM %T client %Q %Q',
|
||||||
|
$table->getTableName(),
|
||||||
|
$where_clause,
|
||||||
|
$limit_clause);
|
||||||
|
|
||||||
|
return $table->loadAllFromArray($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function buildWhereClause($conn_r) {
|
||||||
|
$where = array();
|
||||||
|
|
||||||
|
if ($this->getCreatorPHIDs()) {
|
||||||
|
$where[] = qsprintf(
|
||||||
|
$conn_r,
|
||||||
|
'creatorPHID IN (%Ls)',
|
||||||
|
$this->getCreatorPHIDs());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->formatWhereClause($where);
|
||||||
|
}
|
||||||
|
}
|
15
src/applications/oauthserver/query/client/__init__.php
Normal file
15
src/applications/oauthserver/query/client/__init__.php
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is automatically generated. Lint this module to rebuild it.
|
||||||
|
* @generated
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_module('phabricator', 'applications/oauthserver/storage/client');
|
||||||
|
phutil_require_module('phabricator', 'infrastructure/query/offsetpaged');
|
||||||
|
phutil_require_module('phabricator', 'storage/qsprintf');
|
||||||
|
phutil_require_module('phabricator', 'storage/queryfx');
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_source('PhabricatorOAuthServerClientQuery.php');
|
|
@ -0,0 +1,60 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2012 Facebook, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
final class PhabricatorOAuthClientAuthorizationQuery
|
||||||
|
extends PhabricatorOffsetPagedQuery {
|
||||||
|
private $userPHIDs;
|
||||||
|
|
||||||
|
public function withUserPHIDs(array $phids) {
|
||||||
|
$this->userPHIDs = $phids;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
private function getUserPHIDs() {
|
||||||
|
return $this->userPHIDs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function execute() {
|
||||||
|
$table = new PhabricatorOAuthClientAuthorization();
|
||||||
|
$conn_r = $table->establishConnection('r');
|
||||||
|
|
||||||
|
$where_clause = $this->buildWhereClause($conn_r);
|
||||||
|
$limit_clause = $this->buildLimitClause($conn_r);
|
||||||
|
|
||||||
|
$data = queryfx_all(
|
||||||
|
$conn_r,
|
||||||
|
'SELECT * FROM %T auth %Q %Q',
|
||||||
|
$table->getTableName(),
|
||||||
|
$where_clause,
|
||||||
|
$limit_clause);
|
||||||
|
|
||||||
|
return $table->loadAllFromArray($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function buildWhereClause($conn_r) {
|
||||||
|
$where = array();
|
||||||
|
|
||||||
|
if ($this->getUserPHIDs()) {
|
||||||
|
$where[] = qsprintf(
|
||||||
|
$conn_r,
|
||||||
|
'userPHID IN (%Ls)',
|
||||||
|
$this->getUserPHIDs());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->formatWhereClause($where);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* This file is automatically generated. Lint this module to rebuild it.
|
||||||
|
* @generated
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_module('phabricator', 'applications/oauthserver/storage/clientauthorization');
|
||||||
|
phutil_require_module('phabricator', 'infrastructure/query/offsetpaged');
|
||||||
|
phutil_require_module('phabricator', 'storage/qsprintf');
|
||||||
|
phutil_require_module('phabricator', 'storage/queryfx');
|
||||||
|
|
||||||
|
|
||||||
|
phutil_require_source('PhabricatorOAuthClientAuthorizationQuery.php');
|
Loading…
Reference in a new issue