Merge branch 'master' into blender-tweaks
This commit is contained in:
@@ -9,14 +9,14 @@ return array(
|
|||||||
'names' => array(
|
'names' => array(
|
||||||
'conpherence.pkg.css' => '3c8a0668',
|
'conpherence.pkg.css' => '3c8a0668',
|
||||||
'conpherence.pkg.js' => '020aebcf',
|
'conpherence.pkg.js' => '020aebcf',
|
||||||
'core.pkg.css' => 'aa3df929',
|
'core.pkg.css' => 'd81a600e',
|
||||||
'core.pkg.js' => '5c737607',
|
'core.pkg.js' => 'a747b035',
|
||||||
'differential.pkg.css' => 'b8df73d4',
|
'differential.pkg.css' => '8d8360fb',
|
||||||
'differential.pkg.js' => '67c9ea4c',
|
'differential.pkg.js' => '67e02996',
|
||||||
'diffusion.pkg.css' => '42c75c37',
|
'diffusion.pkg.css' => '42c75c37',
|
||||||
'diffusion.pkg.js' => '91192d85',
|
'diffusion.pkg.js' => 'a98c0bf7',
|
||||||
'maniphest.pkg.css' => '35995d6d',
|
'maniphest.pkg.css' => '35995d6d',
|
||||||
'maniphest.pkg.js' => '286955ae',
|
'maniphest.pkg.js' => 'c9308721',
|
||||||
'rsrc/audio/basic/alert.mp3' => '17889334',
|
'rsrc/audio/basic/alert.mp3' => '17889334',
|
||||||
'rsrc/audio/basic/bing.mp3' => 'a817a0c3',
|
'rsrc/audio/basic/bing.mp3' => 'a817a0c3',
|
||||||
'rsrc/audio/basic/pock.mp3' => '0fa843d0',
|
'rsrc/audio/basic/pock.mp3' => '0fa843d0',
|
||||||
@@ -30,7 +30,7 @@ return array(
|
|||||||
'rsrc/css/aphront/notification.css' => '30240bd2',
|
'rsrc/css/aphront/notification.css' => '30240bd2',
|
||||||
'rsrc/css/aphront/panel-view.css' => '46923d46',
|
'rsrc/css/aphront/panel-view.css' => '46923d46',
|
||||||
'rsrc/css/aphront/phabricator-nav-view.css' => 'f8a0c1bf',
|
'rsrc/css/aphront/phabricator-nav-view.css' => 'f8a0c1bf',
|
||||||
'rsrc/css/aphront/table-view.css' => '76eda3f8',
|
'rsrc/css/aphront/table-view.css' => '7dc3a9c2',
|
||||||
'rsrc/css/aphront/tokenizer.css' => 'b52d0668',
|
'rsrc/css/aphront/tokenizer.css' => 'b52d0668',
|
||||||
'rsrc/css/aphront/tooltip.css' => 'e3f2412f',
|
'rsrc/css/aphront/tooltip.css' => 'e3f2412f',
|
||||||
'rsrc/css/aphront/typeahead-browse.css' => 'b7ed02d2',
|
'rsrc/css/aphront/typeahead-browse.css' => 'b7ed02d2',
|
||||||
@@ -38,7 +38,7 @@ return array(
|
|||||||
'rsrc/css/application/almanac/almanac.css' => '2e050f4f',
|
'rsrc/css/application/almanac/almanac.css' => '2e050f4f',
|
||||||
'rsrc/css/application/auth/auth.css' => 'add92fd8',
|
'rsrc/css/application/auth/auth.css' => 'add92fd8',
|
||||||
'rsrc/css/application/base/main-menu-view.css' => '69c1c2c1',
|
'rsrc/css/application/base/main-menu-view.css' => '69c1c2c1',
|
||||||
'rsrc/css/application/base/notification-menu.css' => 'e6962e89',
|
'rsrc/css/application/base/notification-menu.css' => '4df1ee30',
|
||||||
'rsrc/css/application/base/phui-theme.css' => '35883b37',
|
'rsrc/css/application/base/phui-theme.css' => '35883b37',
|
||||||
'rsrc/css/application/base/standard-page-view.css' => '8a295cb9',
|
'rsrc/css/application/base/standard-page-view.css' => '8a295cb9',
|
||||||
'rsrc/css/application/chatlog/chatlog.css' => 'abdc76ee',
|
'rsrc/css/application/chatlog/chatlog.css' => 'abdc76ee',
|
||||||
@@ -46,7 +46,7 @@ return array(
|
|||||||
'rsrc/css/application/config/config-options.css' => '16c920ae',
|
'rsrc/css/application/config/config-options.css' => '16c920ae',
|
||||||
'rsrc/css/application/config/config-template.css' => '20babf50',
|
'rsrc/css/application/config/config-template.css' => '20babf50',
|
||||||
'rsrc/css/application/config/setup-issue.css' => '5eed85b2',
|
'rsrc/css/application/config/setup-issue.css' => '5eed85b2',
|
||||||
'rsrc/css/application/config/unhandled-exception.css' => '9da8fdab',
|
'rsrc/css/application/config/unhandled-exception.css' => '9ecfc00d',
|
||||||
'rsrc/css/application/conpherence/color.css' => 'b17746b0',
|
'rsrc/css/application/conpherence/color.css' => 'b17746b0',
|
||||||
'rsrc/css/application/conpherence/durable-column.css' => '2d57072b',
|
'rsrc/css/application/conpherence/durable-column.css' => '2d57072b',
|
||||||
'rsrc/css/application/conpherence/header-pane.css' => 'c9a3db8e',
|
'rsrc/css/application/conpherence/header-pane.css' => 'c9a3db8e',
|
||||||
@@ -61,8 +61,8 @@ return array(
|
|||||||
'rsrc/css/application/dashboard/dashboard.css' => '4267d6c6',
|
'rsrc/css/application/dashboard/dashboard.css' => '4267d6c6',
|
||||||
'rsrc/css/application/diff/inline-comment-summary.css' => '81eb368d',
|
'rsrc/css/application/diff/inline-comment-summary.css' => '81eb368d',
|
||||||
'rsrc/css/application/differential/add-comment.css' => '7e5900d9',
|
'rsrc/css/application/differential/add-comment.css' => '7e5900d9',
|
||||||
'rsrc/css/application/differential/changeset-view.css' => '73660575',
|
'rsrc/css/application/differential/changeset-view.css' => 'bde53589',
|
||||||
'rsrc/css/application/differential/core.css' => 'bdb93065',
|
'rsrc/css/application/differential/core.css' => '7300a73e',
|
||||||
'rsrc/css/application/differential/phui-inline-comment.css' => '48acce5b',
|
'rsrc/css/application/differential/phui-inline-comment.css' => '48acce5b',
|
||||||
'rsrc/css/application/differential/revision-comment.css' => '7dbc8d1d',
|
'rsrc/css/application/differential/revision-comment.css' => '7dbc8d1d',
|
||||||
'rsrc/css/application/differential/revision-history.css' => '8aa3eac5',
|
'rsrc/css/application/differential/revision-history.css' => '8aa3eac5',
|
||||||
@@ -99,7 +99,8 @@ return array(
|
|||||||
'rsrc/css/application/policy/policy-transaction-detail.css' => 'c02b8384',
|
'rsrc/css/application/policy/policy-transaction-detail.css' => 'c02b8384',
|
||||||
'rsrc/css/application/policy/policy.css' => 'ceb56a08',
|
'rsrc/css/application/policy/policy.css' => 'ceb56a08',
|
||||||
'rsrc/css/application/ponder/ponder-view.css' => '05a09d0a',
|
'rsrc/css/application/ponder/ponder-view.css' => '05a09d0a',
|
||||||
'rsrc/css/application/project/project-card-view.css' => '3b1f7b20',
|
'rsrc/css/application/project/project-card-view.css' => '4e7371cd',
|
||||||
|
'rsrc/css/application/project/project-triggers.css' => 'cb866c2d',
|
||||||
'rsrc/css/application/project/project-view.css' => '567858b3',
|
'rsrc/css/application/project/project-view.css' => '567858b3',
|
||||||
'rsrc/css/application/releeph/releeph-core.css' => 'f81ff2db',
|
'rsrc/css/application/releeph/releeph-core.css' => 'f81ff2db',
|
||||||
'rsrc/css/application/releeph/releeph-preview-branch.css' => '22db5c07',
|
'rsrc/css/application/releeph/releeph-preview-branch.css' => '22db5c07',
|
||||||
@@ -112,7 +113,7 @@ return array(
|
|||||||
'rsrc/css/application/uiexample/example.css' => 'b4795059',
|
'rsrc/css/application/uiexample/example.css' => 'b4795059',
|
||||||
'rsrc/css/core/core.css' => '1b29ed61',
|
'rsrc/css/core/core.css' => '1b29ed61',
|
||||||
'rsrc/css/core/remarkup.css' => '9e627d41',
|
'rsrc/css/core/remarkup.css' => '9e627d41',
|
||||||
'rsrc/css/core/syntax.css' => '8a16f91b',
|
'rsrc/css/core/syntax.css' => '4234f572',
|
||||||
'rsrc/css/core/z-index.css' => '99c0f5eb',
|
'rsrc/css/core/z-index.css' => '99c0f5eb',
|
||||||
'rsrc/css/diviner/diviner-shared.css' => '4bd263b0',
|
'rsrc/css/diviner/diviner-shared.css' => '4bd263b0',
|
||||||
'rsrc/css/font/font-awesome.css' => '3883938a',
|
'rsrc/css/font/font-awesome.css' => '3883938a',
|
||||||
@@ -127,13 +128,13 @@ return array(
|
|||||||
'rsrc/css/phui/calendar/phui-calendar-list.css' => 'ccd7e4e2',
|
'rsrc/css/phui/calendar/phui-calendar-list.css' => 'ccd7e4e2',
|
||||||
'rsrc/css/phui/calendar/phui-calendar-month.css' => 'cb758c42',
|
'rsrc/css/phui/calendar/phui-calendar-month.css' => 'cb758c42',
|
||||||
'rsrc/css/phui/calendar/phui-calendar.css' => 'f11073aa',
|
'rsrc/css/phui/calendar/phui-calendar.css' => 'f11073aa',
|
||||||
'rsrc/css/phui/object-item/phui-oi-big-ui.css' => '9e037c7a',
|
'rsrc/css/phui/object-item/phui-oi-big-ui.css' => '534f1757',
|
||||||
'rsrc/css/phui/object-item/phui-oi-color.css' => 'b517bfa0',
|
'rsrc/css/phui/object-item/phui-oi-color.css' => 'b517bfa0',
|
||||||
'rsrc/css/phui/object-item/phui-oi-drag-ui.css' => 'da15d3dc',
|
'rsrc/css/phui/object-item/phui-oi-drag-ui.css' => 'da15d3dc',
|
||||||
'rsrc/css/phui/object-item/phui-oi-flush-ui.css' => '490e2e2e',
|
'rsrc/css/phui/object-item/phui-oi-flush-ui.css' => '490e2e2e',
|
||||||
'rsrc/css/phui/object-item/phui-oi-list-view.css' => '909f3844',
|
'rsrc/css/phui/object-item/phui-oi-list-view.css' => 'f14f2422',
|
||||||
'rsrc/css/phui/object-item/phui-oi-simple-ui.css' => '6a30fa46',
|
'rsrc/css/phui/object-item/phui-oi-simple-ui.css' => '6a30fa46',
|
||||||
'rsrc/css/phui/phui-action-list.css' => 'c1a7631d',
|
'rsrc/css/phui/phui-action-list.css' => 'c4972757',
|
||||||
'rsrc/css/phui/phui-action-panel.css' => '6c386cbf',
|
'rsrc/css/phui/phui-action-panel.css' => '6c386cbf',
|
||||||
'rsrc/css/phui/phui-badge.css' => '666e25ad',
|
'rsrc/css/phui/phui-badge.css' => '666e25ad',
|
||||||
'rsrc/css/phui/phui-basic-nav-view.css' => '56ebd66d',
|
'rsrc/css/phui/phui-basic-nav-view.css' => '56ebd66d',
|
||||||
@@ -151,20 +152,20 @@ return array(
|
|||||||
'rsrc/css/phui/phui-document.css' => '52b748a5',
|
'rsrc/css/phui/phui-document.css' => '52b748a5',
|
||||||
'rsrc/css/phui/phui-feed-story.css' => 'a0c05029',
|
'rsrc/css/phui/phui-feed-story.css' => 'a0c05029',
|
||||||
'rsrc/css/phui/phui-fontkit.css' => '9b714a5e',
|
'rsrc/css/phui/phui-fontkit.css' => '9b714a5e',
|
||||||
'rsrc/css/phui/phui-form-view.css' => '81158a04',
|
'rsrc/css/phui/phui-form-view.css' => 'a8e0a1ab',
|
||||||
'rsrc/css/phui/phui-form.css' => '159e2d9c',
|
'rsrc/css/phui/phui-form.css' => '159e2d9c',
|
||||||
'rsrc/css/phui/phui-head-thing.css' => 'd7f293df',
|
'rsrc/css/phui/phui-head-thing.css' => 'd7f293df',
|
||||||
'rsrc/css/phui/phui-header-view.css' => '93cea4ec',
|
'rsrc/css/phui/phui-header-view.css' => '285c9139',
|
||||||
'rsrc/css/phui/phui-hovercard.css' => '6ca90fa0',
|
'rsrc/css/phui/phui-hovercard.css' => '6ca90fa0',
|
||||||
'rsrc/css/phui/phui-icon-set-selector.css' => '7aa5f3ec',
|
'rsrc/css/phui/phui-icon-set-selector.css' => '7aa5f3ec',
|
||||||
'rsrc/css/phui/phui-icon.css' => '281f964d',
|
'rsrc/css/phui/phui-icon.css' => '4cbc684a',
|
||||||
'rsrc/css/phui/phui-image-mask.css' => '62c7f4d2',
|
'rsrc/css/phui/phui-image-mask.css' => '62c7f4d2',
|
||||||
'rsrc/css/phui/phui-info-view.css' => '37b8d9ce',
|
'rsrc/css/phui/phui-info-view.css' => '37b8d9ce',
|
||||||
'rsrc/css/phui/phui-invisible-character-view.css' => 'c694c4a4',
|
'rsrc/css/phui/phui-invisible-character-view.css' => 'c694c4a4',
|
||||||
'rsrc/css/phui/phui-left-right.css' => '68513c34',
|
'rsrc/css/phui/phui-left-right.css' => '68513c34',
|
||||||
'rsrc/css/phui/phui-lightbox.css' => '4ebf22da',
|
'rsrc/css/phui/phui-lightbox.css' => '4ebf22da',
|
||||||
'rsrc/css/phui/phui-list.css' => '470b1adb',
|
'rsrc/css/phui/phui-list.css' => '470b1adb',
|
||||||
'rsrc/css/phui/phui-object-box.css' => '9b58483d',
|
'rsrc/css/phui/phui-object-box.css' => 'f434b6be',
|
||||||
'rsrc/css/phui/phui-pager.css' => 'd022c7ad',
|
'rsrc/css/phui/phui-pager.css' => 'd022c7ad',
|
||||||
'rsrc/css/phui/phui-pinboard-view.css' => '1f08f5d8',
|
'rsrc/css/phui/phui-pinboard-view.css' => '1f08f5d8',
|
||||||
'rsrc/css/phui/phui-property-list-view.css' => 'cad62236',
|
'rsrc/css/phui/phui-property-list-view.css' => 'cad62236',
|
||||||
@@ -172,13 +173,13 @@ return array(
|
|||||||
'rsrc/css/phui/phui-segment-bar-view.css' => '5166b370',
|
'rsrc/css/phui/phui-segment-bar-view.css' => '5166b370',
|
||||||
'rsrc/css/phui/phui-spacing.css' => 'b05cadc3',
|
'rsrc/css/phui/phui-spacing.css' => 'b05cadc3',
|
||||||
'rsrc/css/phui/phui-status.css' => 'e5ff8be0',
|
'rsrc/css/phui/phui-status.css' => 'e5ff8be0',
|
||||||
'rsrc/css/phui/phui-tag-view.css' => 'a42fe34f',
|
'rsrc/css/phui/phui-tag-view.css' => '29409667',
|
||||||
'rsrc/css/phui/phui-timeline-view.css' => '1e348e4b',
|
'rsrc/css/phui/phui-timeline-view.css' => '1e348e4b',
|
||||||
'rsrc/css/phui/phui-two-column-view.css' => '01e6991e',
|
'rsrc/css/phui/phui-two-column-view.css' => '01e6991e',
|
||||||
'rsrc/css/phui/workboards/phui-workboard-color.css' => 'e86de308',
|
'rsrc/css/phui/workboards/phui-workboard-color.css' => 'e86de308',
|
||||||
'rsrc/css/phui/workboards/phui-workboard.css' => '74fc9d98',
|
'rsrc/css/phui/workboards/phui-workboard.css' => '74fc9d98',
|
||||||
'rsrc/css/phui/workboards/phui-workcard.css' => '8c536f90',
|
'rsrc/css/phui/workboards/phui-workcard.css' => '9e9eb0df',
|
||||||
'rsrc/css/phui/workboards/phui-workpanel.css' => 'bd546a49',
|
'rsrc/css/phui/workboards/phui-workpanel.css' => '3ae89b20',
|
||||||
'rsrc/css/sprite-login.css' => '18b368a6',
|
'rsrc/css/sprite-login.css' => '18b368a6',
|
||||||
'rsrc/css/sprite-tokens.css' => 'f1896dc5',
|
'rsrc/css/sprite-tokens.css' => 'f1896dc5',
|
||||||
'rsrc/css/syntax/syntax-default.css' => '055fc231',
|
'rsrc/css/syntax/syntax-default.css' => '055fc231',
|
||||||
@@ -250,7 +251,7 @@ return array(
|
|||||||
'rsrc/externals/javelin/lib/Routable.js' => '6a18c42e',
|
'rsrc/externals/javelin/lib/Routable.js' => '6a18c42e',
|
||||||
'rsrc/externals/javelin/lib/Router.js' => '32755edb',
|
'rsrc/externals/javelin/lib/Router.js' => '32755edb',
|
||||||
'rsrc/externals/javelin/lib/Scrollbar.js' => 'a43ae2ae',
|
'rsrc/externals/javelin/lib/Scrollbar.js' => 'a43ae2ae',
|
||||||
'rsrc/externals/javelin/lib/Sound.js' => 'e562708c',
|
'rsrc/externals/javelin/lib/Sound.js' => 'd4cc2d2a',
|
||||||
'rsrc/externals/javelin/lib/URI.js' => '2e255291',
|
'rsrc/externals/javelin/lib/URI.js' => '2e255291',
|
||||||
'rsrc/externals/javelin/lib/Vector.js' => 'e9c80beb',
|
'rsrc/externals/javelin/lib/Vector.js' => 'e9c80beb',
|
||||||
'rsrc/externals/javelin/lib/WebSocket.js' => 'fdc13e4e',
|
'rsrc/externals/javelin/lib/WebSocket.js' => 'fdc13e4e',
|
||||||
@@ -277,6 +278,8 @@ return array(
|
|||||||
'rsrc/image/checker_dark.png' => '7fc8fa7b',
|
'rsrc/image/checker_dark.png' => '7fc8fa7b',
|
||||||
'rsrc/image/checker_light.png' => '3157a202',
|
'rsrc/image/checker_light.png' => '3157a202',
|
||||||
'rsrc/image/checker_lighter.png' => 'c45928c1',
|
'rsrc/image/checker_lighter.png' => 'c45928c1',
|
||||||
|
'rsrc/image/chevron-in.png' => '1aa2f88f',
|
||||||
|
'rsrc/image/chevron-out.png' => 'c815e272',
|
||||||
'rsrc/image/controls/checkbox-checked.png' => '1770d7a0',
|
'rsrc/image/controls/checkbox-checked.png' => '1770d7a0',
|
||||||
'rsrc/image/controls/checkbox-unchecked.png' => 'e1deba0a',
|
'rsrc/image/controls/checkbox-unchecked.png' => 'e1deba0a',
|
||||||
'rsrc/image/d5d8e1.png' => '6764616e',
|
'rsrc/image/d5d8e1.png' => '6764616e',
|
||||||
@@ -374,17 +377,16 @@ return array(
|
|||||||
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '076bd092',
|
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '076bd092',
|
||||||
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '1e413dc9',
|
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '1e413dc9',
|
||||||
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => '9b1cbd76',
|
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => '9b1cbd76',
|
||||||
'rsrc/js/application/diff/DiffChangeset.js' => 'e7cf10d6',
|
'rsrc/js/application/diff/DiffChangeset.js' => 'd0a85a85',
|
||||||
'rsrc/js/application/diff/DiffChangesetList.js' => 'b91204e9',
|
'rsrc/js/application/diff/DiffChangesetList.js' => '04023d82',
|
||||||
'rsrc/js/application/diff/DiffInline.js' => 'a4a14a94',
|
'rsrc/js/application/diff/DiffInline.js' => 'a4a14a94',
|
||||||
'rsrc/js/application/diff/behavior-preview-link.js' => 'f51e9c17',
|
'rsrc/js/application/diff/behavior-preview-link.js' => 'f51e9c17',
|
||||||
'rsrc/js/application/differential/behavior-diff-radios.js' => '925fe8cd',
|
'rsrc/js/application/differential/behavior-diff-radios.js' => '925fe8cd',
|
||||||
'rsrc/js/application/differential/behavior-populate.js' => 'dfa1d313',
|
'rsrc/js/application/differential/behavior-populate.js' => 'dfa1d313',
|
||||||
'rsrc/js/application/differential/behavior-user-select.js' => 'e18685c0',
|
|
||||||
'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => '94243d89',
|
'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => '94243d89',
|
||||||
'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'b7b73831',
|
'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'b7b73831',
|
||||||
'rsrc/js/application/diffusion/behavior-commit-branches.js' => '4b671572',
|
'rsrc/js/application/diffusion/behavior-commit-branches.js' => '4b671572',
|
||||||
'rsrc/js/application/diffusion/behavior-commit-graph.js' => '1c88f154',
|
'rsrc/js/application/diffusion/behavior-commit-graph.js' => 'ef836bf2',
|
||||||
'rsrc/js/application/diffusion/behavior-locate-file.js' => '87428eb2',
|
'rsrc/js/application/diffusion/behavior-locate-file.js' => '87428eb2',
|
||||||
'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'c715c123',
|
'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'c715c123',
|
||||||
'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '6a85bc5a',
|
'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '6a85bc5a',
|
||||||
@@ -396,10 +398,9 @@ return array(
|
|||||||
'rsrc/js/application/herald/HeraldRuleEditor.js' => '27daef73',
|
'rsrc/js/application/herald/HeraldRuleEditor.js' => '27daef73',
|
||||||
'rsrc/js/application/herald/PathTypeahead.js' => 'ad486db3',
|
'rsrc/js/application/herald/PathTypeahead.js' => 'ad486db3',
|
||||||
'rsrc/js/application/herald/herald-rule-editor.js' => '0922e81d',
|
'rsrc/js/application/herald/herald-rule-editor.js' => '0922e81d',
|
||||||
'rsrc/js/application/maniphest/behavior-batch-selector.js' => 'cffd39b4',
|
'rsrc/js/application/maniphest/behavior-batch-selector.js' => '139ef688',
|
||||||
'rsrc/js/application/maniphest/behavior-line-chart.js' => 'c8147a20',
|
'rsrc/js/application/maniphest/behavior-line-chart.js' => 'c8147a20',
|
||||||
'rsrc/js/application/maniphest/behavior-list-edit.js' => 'c687e867',
|
'rsrc/js/application/maniphest/behavior-list-edit.js' => 'c687e867',
|
||||||
'rsrc/js/application/maniphest/behavior-subpriorityeditor.js' => '8400307c',
|
|
||||||
'rsrc/js/application/owners/OwnersPathEditor.js' => '2a8b62d9',
|
'rsrc/js/application/owners/OwnersPathEditor.js' => '2a8b62d9',
|
||||||
'rsrc/js/application/owners/owners-path-editor.js' => 'ff688a7a',
|
'rsrc/js/application/owners/owners-path-editor.js' => 'ff688a7a',
|
||||||
'rsrc/js/application/passphrase/passphrase-credential-control.js' => '48fe33d0',
|
'rsrc/js/application/passphrase/passphrase-credential-control.js' => '48fe33d0',
|
||||||
@@ -410,17 +411,22 @@ return array(
|
|||||||
'rsrc/js/application/phortune/phortune-credit-card-form.js' => 'd12d214f',
|
'rsrc/js/application/phortune/phortune-credit-card-form.js' => 'd12d214f',
|
||||||
'rsrc/js/application/policy/behavior-policy-control.js' => '0eaa33a9',
|
'rsrc/js/application/policy/behavior-policy-control.js' => '0eaa33a9',
|
||||||
'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '9347f172',
|
'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '9347f172',
|
||||||
'rsrc/js/application/projects/WorkboardBoard.js' => '45d0b2b1',
|
'rsrc/js/application/projects/WorkboardBoard.js' => 'c02a5497',
|
||||||
'rsrc/js/application/projects/WorkboardCard.js' => '9a513421',
|
'rsrc/js/application/projects/WorkboardCard.js' => '0392a5d8',
|
||||||
'rsrc/js/application/projects/WorkboardColumn.js' => '8573dc1b',
|
'rsrc/js/application/projects/WorkboardCardTemplate.js' => '2a61f8d4',
|
||||||
|
'rsrc/js/application/projects/WorkboardColumn.js' => 'c3d24e63',
|
||||||
'rsrc/js/application/projects/WorkboardController.js' => '42c7a5a7',
|
'rsrc/js/application/projects/WorkboardController.js' => '42c7a5a7',
|
||||||
'rsrc/js/application/projects/behavior-project-boards.js' => '05c74d65',
|
'rsrc/js/application/projects/WorkboardDropEffect.js' => '8e0aa661',
|
||||||
|
'rsrc/js/application/projects/WorkboardHeader.js' => '111bfd2d',
|
||||||
|
'rsrc/js/application/projects/WorkboardHeaderTemplate.js' => 'ebe83a6b',
|
||||||
|
'rsrc/js/application/projects/WorkboardOrderTemplate.js' => '03e8891f',
|
||||||
|
'rsrc/js/application/projects/behavior-project-boards.js' => 'aad45445',
|
||||||
'rsrc/js/application/projects/behavior-project-create.js' => '34c53422',
|
'rsrc/js/application/projects/behavior-project-create.js' => '34c53422',
|
||||||
'rsrc/js/application/projects/behavior-reorder-columns.js' => '8ac32fd9',
|
'rsrc/js/application/projects/behavior-reorder-columns.js' => '8ac32fd9',
|
||||||
'rsrc/js/application/releeph/releeph-preview-branch.js' => '75184d68',
|
'rsrc/js/application/releeph/releeph-preview-branch.js' => '75184d68',
|
||||||
'rsrc/js/application/releeph/releeph-request-state-change.js' => '9f081f05',
|
'rsrc/js/application/releeph/releeph-request-state-change.js' => '9f081f05',
|
||||||
'rsrc/js/application/releeph/releeph-request-typeahead.js' => 'aa3a100c',
|
'rsrc/js/application/releeph/releeph-request-typeahead.js' => 'aa3a100c',
|
||||||
'rsrc/js/application/repository/repository-crossreference.js' => 'db0c0214',
|
'rsrc/js/application/repository/repository-crossreference.js' => 'c15122b4',
|
||||||
'rsrc/js/application/search/behavior-reorder-profile-menu-items.js' => 'e5bdb730',
|
'rsrc/js/application/search/behavior-reorder-profile-menu-items.js' => 'e5bdb730',
|
||||||
'rsrc/js/application/search/behavior-reorder-queries.js' => 'b86f297f',
|
'rsrc/js/application/search/behavior-reorder-queries.js' => 'b86f297f',
|
||||||
'rsrc/js/application/transactions/behavior-comment-actions.js' => '4dffaeb2',
|
'rsrc/js/application/transactions/behavior-comment-actions.js' => '4dffaeb2',
|
||||||
@@ -429,13 +435,18 @@ return array(
|
|||||||
'rsrc/js/application/transactions/behavior-show-older-transactions.js' => '600f440c',
|
'rsrc/js/application/transactions/behavior-show-older-transactions.js' => '600f440c',
|
||||||
'rsrc/js/application/transactions/behavior-transaction-comment-form.js' => '2bdadf1a',
|
'rsrc/js/application/transactions/behavior-transaction-comment-form.js' => '2bdadf1a',
|
||||||
'rsrc/js/application/transactions/behavior-transaction-list.js' => '9cec214e',
|
'rsrc/js/application/transactions/behavior-transaction-list.js' => '9cec214e',
|
||||||
|
'rsrc/js/application/trigger/TriggerRule.js' => '1c60c3fc',
|
||||||
|
'rsrc/js/application/trigger/TriggerRuleControl.js' => '5faf27b9',
|
||||||
|
'rsrc/js/application/trigger/TriggerRuleEditor.js' => 'b49fd60c',
|
||||||
|
'rsrc/js/application/trigger/TriggerRuleType.js' => '4feea7d3',
|
||||||
|
'rsrc/js/application/trigger/trigger-rule-editor.js' => '398fdf13',
|
||||||
'rsrc/js/application/typeahead/behavior-typeahead-browse.js' => '70245195',
|
'rsrc/js/application/typeahead/behavior-typeahead-browse.js' => '70245195',
|
||||||
'rsrc/js/application/typeahead/behavior-typeahead-search.js' => '7b139193',
|
'rsrc/js/application/typeahead/behavior-typeahead-search.js' => '7b139193',
|
||||||
'rsrc/js/application/uiexample/gesture-example.js' => '242dedd0',
|
'rsrc/js/application/uiexample/gesture-example.js' => '242dedd0',
|
||||||
'rsrc/js/application/uiexample/notification-example.js' => '29819b75',
|
'rsrc/js/application/uiexample/notification-example.js' => '29819b75',
|
||||||
'rsrc/js/core/Busy.js' => '5202e831',
|
'rsrc/js/core/Busy.js' => '5202e831',
|
||||||
'rsrc/js/core/DragAndDropFileUpload.js' => '4370900d',
|
'rsrc/js/core/DragAndDropFileUpload.js' => '4370900d',
|
||||||
'rsrc/js/core/DraggableList.js' => '3c6bd549',
|
'rsrc/js/core/DraggableList.js' => 'c9ad6f70',
|
||||||
'rsrc/js/core/Favicon.js' => '7930776a',
|
'rsrc/js/core/Favicon.js' => '7930776a',
|
||||||
'rsrc/js/core/FileUpload.js' => 'ab85e184',
|
'rsrc/js/core/FileUpload.js' => 'ab85e184',
|
||||||
'rsrc/js/core/Hovercard.js' => '074f0783',
|
'rsrc/js/core/Hovercard.js' => '074f0783',
|
||||||
@@ -443,7 +454,7 @@ return array(
|
|||||||
'rsrc/js/core/KeyboardShortcutManager.js' => '37b8a04a',
|
'rsrc/js/core/KeyboardShortcutManager.js' => '37b8a04a',
|
||||||
'rsrc/js/core/MultirowRowManager.js' => '5b54c823',
|
'rsrc/js/core/MultirowRowManager.js' => '5b54c823',
|
||||||
'rsrc/js/core/Notification.js' => 'a9b91e3f',
|
'rsrc/js/core/Notification.js' => 'a9b91e3f',
|
||||||
'rsrc/js/core/Prefab.js' => 'bf457520',
|
'rsrc/js/core/Prefab.js' => '5793d835',
|
||||||
'rsrc/js/core/ShapedRequest.js' => 'abf88db8',
|
'rsrc/js/core/ShapedRequest.js' => 'abf88db8',
|
||||||
'rsrc/js/core/TextAreaUtils.js' => 'f340a484',
|
'rsrc/js/core/TextAreaUtils.js' => 'f340a484',
|
||||||
'rsrc/js/core/Title.js' => '43bc9360',
|
'rsrc/js/core/Title.js' => '43bc9360',
|
||||||
@@ -473,7 +484,7 @@ return array(
|
|||||||
'rsrc/js/core/behavior-linked-container.js' => '74446546',
|
'rsrc/js/core/behavior-linked-container.js' => '74446546',
|
||||||
'rsrc/js/core/behavior-more.js' => '506aa3f4',
|
'rsrc/js/core/behavior-more.js' => '506aa3f4',
|
||||||
'rsrc/js/core/behavior-object-selector.js' => 'a4af0b4a',
|
'rsrc/js/core/behavior-object-selector.js' => 'a4af0b4a',
|
||||||
'rsrc/js/core/behavior-oncopy.js' => '418f6684',
|
'rsrc/js/core/behavior-oncopy.js' => 'ff7b3f22',
|
||||||
'rsrc/js/core/behavior-phabricator-nav.js' => 'f166c949',
|
'rsrc/js/core/behavior-phabricator-nav.js' => 'f166c949',
|
||||||
'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => '2f80333f',
|
'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => '2f80333f',
|
||||||
'rsrc/js/core/behavior-read-only-warning.js' => 'b9109f8f',
|
'rsrc/js/core/behavior-read-only-warning.js' => 'b9109f8f',
|
||||||
@@ -489,7 +500,7 @@ return array(
|
|||||||
'rsrc/js/core/behavior-select-on-click.js' => '66365ee2',
|
'rsrc/js/core/behavior-select-on-click.js' => '66365ee2',
|
||||||
'rsrc/js/core/behavior-setup-check-https.js' => '01384686',
|
'rsrc/js/core/behavior-setup-check-https.js' => '01384686',
|
||||||
'rsrc/js/core/behavior-time-typeahead.js' => '5803b9e7',
|
'rsrc/js/core/behavior-time-typeahead.js' => '5803b9e7',
|
||||||
'rsrc/js/core/behavior-toggle-class.js' => 'f5c78ae3',
|
'rsrc/js/core/behavior-toggle-class.js' => '32db8374',
|
||||||
'rsrc/js/core/behavior-tokenizer.js' => '3b4899b0',
|
'rsrc/js/core/behavior-tokenizer.js' => '3b4899b0',
|
||||||
'rsrc/js/core/behavior-tooltip.js' => '73ecc1f8',
|
'rsrc/js/core/behavior-tooltip.js' => '73ecc1f8',
|
||||||
'rsrc/js/core/behavior-user-menu.js' => '60cd9241',
|
'rsrc/js/core/behavior-user-menu.js' => '60cd9241',
|
||||||
@@ -504,9 +515,10 @@ return array(
|
|||||||
'rsrc/js/phui/behavior-phui-selectable-list.js' => 'b26a41e4',
|
'rsrc/js/phui/behavior-phui-selectable-list.js' => 'b26a41e4',
|
||||||
'rsrc/js/phui/behavior-phui-submenu.js' => 'b5e9bff9',
|
'rsrc/js/phui/behavior-phui-submenu.js' => 'b5e9bff9',
|
||||||
'rsrc/js/phui/behavior-phui-tab-group.js' => '242aa08b',
|
'rsrc/js/phui/behavior-phui-tab-group.js' => '242aa08b',
|
||||||
|
'rsrc/js/phui/behavior-phui-timer-control.js' => 'f84bcbf4',
|
||||||
'rsrc/js/phuix/PHUIXActionListView.js' => 'c68f183f',
|
'rsrc/js/phuix/PHUIXActionListView.js' => 'c68f183f',
|
||||||
'rsrc/js/phuix/PHUIXActionView.js' => 'aaa08f3b',
|
'rsrc/js/phuix/PHUIXActionView.js' => 'aaa08f3b',
|
||||||
'rsrc/js/phuix/PHUIXAutocomplete.js' => '58cc4ab8',
|
'rsrc/js/phuix/PHUIXAutocomplete.js' => '2fbe234d',
|
||||||
'rsrc/js/phuix/PHUIXButtonView.js' => '55a24e84',
|
'rsrc/js/phuix/PHUIXButtonView.js' => '55a24e84',
|
||||||
'rsrc/js/phuix/PHUIXDropdownMenu.js' => 'bdce4d78',
|
'rsrc/js/phuix/PHUIXDropdownMenu.js' => 'bdce4d78',
|
||||||
'rsrc/js/phuix/PHUIXExample.js' => 'c2c500a7',
|
'rsrc/js/phuix/PHUIXExample.js' => 'c2c500a7',
|
||||||
@@ -521,7 +533,7 @@ return array(
|
|||||||
'aphront-list-filter-view-css' => 'feb64255',
|
'aphront-list-filter-view-css' => 'feb64255',
|
||||||
'aphront-multi-column-view-css' => 'fbc00ba3',
|
'aphront-multi-column-view-css' => 'fbc00ba3',
|
||||||
'aphront-panel-view-css' => '46923d46',
|
'aphront-panel-view-css' => '46923d46',
|
||||||
'aphront-table-view-css' => '76eda3f8',
|
'aphront-table-view-css' => '7dc3a9c2',
|
||||||
'aphront-tokenizer-control-css' => 'b52d0668',
|
'aphront-tokenizer-control-css' => 'b52d0668',
|
||||||
'aphront-tooltip-css' => 'e3f2412f',
|
'aphront-tooltip-css' => 'e3f2412f',
|
||||||
'aphront-typeahead-control-css' => '8779483d',
|
'aphront-typeahead-control-css' => '8779483d',
|
||||||
@@ -540,8 +552,8 @@ return array(
|
|||||||
'conpherence-thread-manager' => 'aec8e38c',
|
'conpherence-thread-manager' => 'aec8e38c',
|
||||||
'conpherence-transaction-css' => '3a3f5e7e',
|
'conpherence-transaction-css' => '3a3f5e7e',
|
||||||
'd3' => 'd67475f5',
|
'd3' => 'd67475f5',
|
||||||
'differential-changeset-view-css' => '73660575',
|
'differential-changeset-view-css' => 'bde53589',
|
||||||
'differential-core-view-css' => 'bdb93065',
|
'differential-core-view-css' => '7300a73e',
|
||||||
'differential-revision-add-comment-css' => '7e5900d9',
|
'differential-revision-add-comment-css' => '7e5900d9',
|
||||||
'differential-revision-comment-css' => '7dbc8d1d',
|
'differential-revision-comment-css' => '7dbc8d1d',
|
||||||
'differential-revision-history-css' => '8aa3eac5',
|
'differential-revision-history-css' => '8aa3eac5',
|
||||||
@@ -595,9 +607,8 @@ return array(
|
|||||||
'javelin-behavior-diff-preview-link' => 'f51e9c17',
|
'javelin-behavior-diff-preview-link' => 'f51e9c17',
|
||||||
'javelin-behavior-differential-diff-radios' => '925fe8cd',
|
'javelin-behavior-differential-diff-radios' => '925fe8cd',
|
||||||
'javelin-behavior-differential-populate' => 'dfa1d313',
|
'javelin-behavior-differential-populate' => 'dfa1d313',
|
||||||
'javelin-behavior-differential-user-select' => 'e18685c0',
|
|
||||||
'javelin-behavior-diffusion-commit-branches' => '4b671572',
|
'javelin-behavior-diffusion-commit-branches' => '4b671572',
|
||||||
'javelin-behavior-diffusion-commit-graph' => '1c88f154',
|
'javelin-behavior-diffusion-commit-graph' => 'ef836bf2',
|
||||||
'javelin-behavior-diffusion-locate-file' => '87428eb2',
|
'javelin-behavior-diffusion-locate-file' => '87428eb2',
|
||||||
'javelin-behavior-diffusion-pull-lastmodified' => 'c715c123',
|
'javelin-behavior-diffusion-pull-lastmodified' => 'c715c123',
|
||||||
'javelin-behavior-document-engine' => '243d6c22',
|
'javelin-behavior-document-engine' => '243d6c22',
|
||||||
@@ -618,9 +629,8 @@ return array(
|
|||||||
'javelin-behavior-lightbox-attachments' => 'c7e748bf',
|
'javelin-behavior-lightbox-attachments' => 'c7e748bf',
|
||||||
'javelin-behavior-line-chart' => 'c8147a20',
|
'javelin-behavior-line-chart' => 'c8147a20',
|
||||||
'javelin-behavior-linked-container' => '74446546',
|
'javelin-behavior-linked-container' => '74446546',
|
||||||
'javelin-behavior-maniphest-batch-selector' => 'cffd39b4',
|
'javelin-behavior-maniphest-batch-selector' => '139ef688',
|
||||||
'javelin-behavior-maniphest-list-editor' => 'c687e867',
|
'javelin-behavior-maniphest-list-editor' => 'c687e867',
|
||||||
'javelin-behavior-maniphest-subpriority-editor' => '8400307c',
|
|
||||||
'javelin-behavior-owners-path-editor' => 'ff688a7a',
|
'javelin-behavior-owners-path-editor' => 'ff688a7a',
|
||||||
'javelin-behavior-passphrase-credential-control' => '48fe33d0',
|
'javelin-behavior-passphrase-credential-control' => '48fe33d0',
|
||||||
'javelin-behavior-phabricator-active-nav' => '7353f43d',
|
'javelin-behavior-phabricator-active-nav' => '7353f43d',
|
||||||
@@ -635,7 +645,7 @@ return array(
|
|||||||
'javelin-behavior-phabricator-nav' => 'f166c949',
|
'javelin-behavior-phabricator-nav' => 'f166c949',
|
||||||
'javelin-behavior-phabricator-notification-example' => '29819b75',
|
'javelin-behavior-phabricator-notification-example' => '29819b75',
|
||||||
'javelin-behavior-phabricator-object-selector' => 'a4af0b4a',
|
'javelin-behavior-phabricator-object-selector' => 'a4af0b4a',
|
||||||
'javelin-behavior-phabricator-oncopy' => '418f6684',
|
'javelin-behavior-phabricator-oncopy' => 'ff7b3f22',
|
||||||
'javelin-behavior-phabricator-remarkup-assist' => '2f80333f',
|
'javelin-behavior-phabricator-remarkup-assist' => '2f80333f',
|
||||||
'javelin-behavior-phabricator-reveal-content' => 'b105a3a6',
|
'javelin-behavior-phabricator-reveal-content' => 'b105a3a6',
|
||||||
'javelin-behavior-phabricator-search-typeahead' => '1cb7d027',
|
'javelin-behavior-phabricator-search-typeahead' => '1cb7d027',
|
||||||
@@ -652,10 +662,11 @@ return array(
|
|||||||
'javelin-behavior-phui-selectable-list' => 'b26a41e4',
|
'javelin-behavior-phui-selectable-list' => 'b26a41e4',
|
||||||
'javelin-behavior-phui-submenu' => 'b5e9bff9',
|
'javelin-behavior-phui-submenu' => 'b5e9bff9',
|
||||||
'javelin-behavior-phui-tab-group' => '242aa08b',
|
'javelin-behavior-phui-tab-group' => '242aa08b',
|
||||||
|
'javelin-behavior-phui-timer-control' => 'f84bcbf4',
|
||||||
'javelin-behavior-phuix-example' => 'c2c500a7',
|
'javelin-behavior-phuix-example' => 'c2c500a7',
|
||||||
'javelin-behavior-policy-control' => '0eaa33a9',
|
'javelin-behavior-policy-control' => '0eaa33a9',
|
||||||
'javelin-behavior-policy-rule-editor' => '9347f172',
|
'javelin-behavior-policy-rule-editor' => '9347f172',
|
||||||
'javelin-behavior-project-boards' => '05c74d65',
|
'javelin-behavior-project-boards' => 'aad45445',
|
||||||
'javelin-behavior-project-create' => '34c53422',
|
'javelin-behavior-project-create' => '34c53422',
|
||||||
'javelin-behavior-quicksand-blacklist' => '5a6f6a06',
|
'javelin-behavior-quicksand-blacklist' => '5a6f6a06',
|
||||||
'javelin-behavior-read-only-warning' => 'b9109f8f',
|
'javelin-behavior-read-only-warning' => 'b9109f8f',
|
||||||
@@ -669,7 +680,7 @@ return array(
|
|||||||
'javelin-behavior-reorder-applications' => 'aa371860',
|
'javelin-behavior-reorder-applications' => 'aa371860',
|
||||||
'javelin-behavior-reorder-columns' => '8ac32fd9',
|
'javelin-behavior-reorder-columns' => '8ac32fd9',
|
||||||
'javelin-behavior-reorder-profile-menu-items' => 'e5bdb730',
|
'javelin-behavior-reorder-profile-menu-items' => 'e5bdb730',
|
||||||
'javelin-behavior-repository-crossreference' => 'db0c0214',
|
'javelin-behavior-repository-crossreference' => 'c15122b4',
|
||||||
'javelin-behavior-scrollbar' => '92388bae',
|
'javelin-behavior-scrollbar' => '92388bae',
|
||||||
'javelin-behavior-search-reorder-queries' => 'b86f297f',
|
'javelin-behavior-search-reorder-queries' => 'b86f297f',
|
||||||
'javelin-behavior-select-content' => 'e8240b50',
|
'javelin-behavior-select-content' => 'e8240b50',
|
||||||
@@ -678,8 +689,9 @@ return array(
|
|||||||
'javelin-behavior-stripe-payment-form' => '02cb4398',
|
'javelin-behavior-stripe-payment-form' => '02cb4398',
|
||||||
'javelin-behavior-test-payment-form' => '4a7fb02b',
|
'javelin-behavior-test-payment-form' => '4a7fb02b',
|
||||||
'javelin-behavior-time-typeahead' => '5803b9e7',
|
'javelin-behavior-time-typeahead' => '5803b9e7',
|
||||||
'javelin-behavior-toggle-class' => 'f5c78ae3',
|
'javelin-behavior-toggle-class' => '32db8374',
|
||||||
'javelin-behavior-toggle-widget' => '8f959ad0',
|
'javelin-behavior-toggle-widget' => '8f959ad0',
|
||||||
|
'javelin-behavior-trigger-rule-editor' => '398fdf13',
|
||||||
'javelin-behavior-typeahead-browse' => '70245195',
|
'javelin-behavior-typeahead-browse' => '70245195',
|
||||||
'javelin-behavior-typeahead-search' => '7b139193',
|
'javelin-behavior-typeahead-search' => '7b139193',
|
||||||
'javelin-behavior-user-menu' => '60cd9241',
|
'javelin-behavior-user-menu' => '60cd9241',
|
||||||
@@ -708,7 +720,7 @@ return array(
|
|||||||
'javelin-routable' => '6a18c42e',
|
'javelin-routable' => '6a18c42e',
|
||||||
'javelin-router' => '32755edb',
|
'javelin-router' => '32755edb',
|
||||||
'javelin-scrollbar' => 'a43ae2ae',
|
'javelin-scrollbar' => 'a43ae2ae',
|
||||||
'javelin-sound' => 'e562708c',
|
'javelin-sound' => 'd4cc2d2a',
|
||||||
'javelin-stratcom' => '0889b835',
|
'javelin-stratcom' => '0889b835',
|
||||||
'javelin-tokenizer' => '89a1ae3a',
|
'javelin-tokenizer' => '89a1ae3a',
|
||||||
'javelin-typeahead' => 'a4356cde',
|
'javelin-typeahead' => 'a4356cde',
|
||||||
@@ -727,10 +739,15 @@ return array(
|
|||||||
'javelin-view-renderer' => '9aae2b66',
|
'javelin-view-renderer' => '9aae2b66',
|
||||||
'javelin-view-visitor' => '308f9fe4',
|
'javelin-view-visitor' => '308f9fe4',
|
||||||
'javelin-websocket' => 'fdc13e4e',
|
'javelin-websocket' => 'fdc13e4e',
|
||||||
'javelin-workboard-board' => '45d0b2b1',
|
'javelin-workboard-board' => 'c02a5497',
|
||||||
'javelin-workboard-card' => '9a513421',
|
'javelin-workboard-card' => '0392a5d8',
|
||||||
'javelin-workboard-column' => '8573dc1b',
|
'javelin-workboard-card-template' => '2a61f8d4',
|
||||||
|
'javelin-workboard-column' => 'c3d24e63',
|
||||||
'javelin-workboard-controller' => '42c7a5a7',
|
'javelin-workboard-controller' => '42c7a5a7',
|
||||||
|
'javelin-workboard-drop-effect' => '8e0aa661',
|
||||||
|
'javelin-workboard-header' => '111bfd2d',
|
||||||
|
'javelin-workboard-header-template' => 'ebe83a6b',
|
||||||
|
'javelin-workboard-order-template' => '03e8891f',
|
||||||
'javelin-workflow' => '958e9045',
|
'javelin-workflow' => '958e9045',
|
||||||
'maniphest-report-css' => '3d53188b',
|
'maniphest-report-css' => '3d53188b',
|
||||||
'maniphest-task-edit-css' => '272daa84',
|
'maniphest-task-edit-css' => '272daa84',
|
||||||
@@ -742,7 +759,7 @@ return array(
|
|||||||
'path-typeahead' => 'ad486db3',
|
'path-typeahead' => 'ad486db3',
|
||||||
'people-picture-menu-item-css' => 'fe8e07cf',
|
'people-picture-menu-item-css' => 'fe8e07cf',
|
||||||
'people-profile-css' => '2ea2daa1',
|
'people-profile-css' => '2ea2daa1',
|
||||||
'phabricator-action-list-view-css' => 'c1a7631d',
|
'phabricator-action-list-view-css' => 'c4972757',
|
||||||
'phabricator-busy' => '5202e831',
|
'phabricator-busy' => '5202e831',
|
||||||
'phabricator-chatlog-css' => 'abdc76ee',
|
'phabricator-chatlog-css' => 'abdc76ee',
|
||||||
'phabricator-content-source-view-css' => 'cdf0d579',
|
'phabricator-content-source-view-css' => 'cdf0d579',
|
||||||
@@ -751,11 +768,11 @@ return array(
|
|||||||
'phabricator-darklog' => '3b869402',
|
'phabricator-darklog' => '3b869402',
|
||||||
'phabricator-darkmessage' => '26cd4b73',
|
'phabricator-darkmessage' => '26cd4b73',
|
||||||
'phabricator-dashboard-css' => '4267d6c6',
|
'phabricator-dashboard-css' => '4267d6c6',
|
||||||
'phabricator-diff-changeset' => 'e7cf10d6',
|
'phabricator-diff-changeset' => 'd0a85a85',
|
||||||
'phabricator-diff-changeset-list' => 'b91204e9',
|
'phabricator-diff-changeset-list' => '04023d82',
|
||||||
'phabricator-diff-inline' => 'a4a14a94',
|
'phabricator-diff-inline' => 'a4a14a94',
|
||||||
'phabricator-drag-and-drop-file-upload' => '4370900d',
|
'phabricator-drag-and-drop-file-upload' => '4370900d',
|
||||||
'phabricator-draggable-list' => '3c6bd549',
|
'phabricator-draggable-list' => 'c9ad6f70',
|
||||||
'phabricator-fatal-config-template-css' => '20babf50',
|
'phabricator-fatal-config-template-css' => '20babf50',
|
||||||
'phabricator-favicon' => '7930776a',
|
'phabricator-favicon' => '7930776a',
|
||||||
'phabricator-feed-css' => 'd8b6e3f8',
|
'phabricator-feed-css' => 'd8b6e3f8',
|
||||||
@@ -768,10 +785,10 @@ return array(
|
|||||||
'phabricator-nav-view-css' => 'f8a0c1bf',
|
'phabricator-nav-view-css' => 'f8a0c1bf',
|
||||||
'phabricator-notification' => 'a9b91e3f',
|
'phabricator-notification' => 'a9b91e3f',
|
||||||
'phabricator-notification-css' => '30240bd2',
|
'phabricator-notification-css' => '30240bd2',
|
||||||
'phabricator-notification-menu-css' => 'e6962e89',
|
'phabricator-notification-menu-css' => '4df1ee30',
|
||||||
'phabricator-object-selector-css' => 'ee77366f',
|
'phabricator-object-selector-css' => 'ee77366f',
|
||||||
'phabricator-phtize' => '2f1db1ed',
|
'phabricator-phtize' => '2f1db1ed',
|
||||||
'phabricator-prefab' => 'bf457520',
|
'phabricator-prefab' => '5793d835',
|
||||||
'phabricator-remarkup-css' => '9e627d41',
|
'phabricator-remarkup-css' => '9e627d41',
|
||||||
'phabricator-search-results-css' => '9ea70ace',
|
'phabricator-search-results-css' => '9ea70ace',
|
||||||
'phabricator-shaped-request' => 'abf88db8',
|
'phabricator-shaped-request' => 'abf88db8',
|
||||||
@@ -820,13 +837,13 @@ return array(
|
|||||||
'phui-font-icon-base-css' => 'd7994e06',
|
'phui-font-icon-base-css' => 'd7994e06',
|
||||||
'phui-fontkit-css' => '9b714a5e',
|
'phui-fontkit-css' => '9b714a5e',
|
||||||
'phui-form-css' => '159e2d9c',
|
'phui-form-css' => '159e2d9c',
|
||||||
'phui-form-view-css' => '81158a04',
|
'phui-form-view-css' => 'a8e0a1ab',
|
||||||
'phui-head-thing-view-css' => 'd7f293df',
|
'phui-head-thing-view-css' => 'd7f293df',
|
||||||
'phui-header-view-css' => '93cea4ec',
|
'phui-header-view-css' => '285c9139',
|
||||||
'phui-hovercard' => '074f0783',
|
'phui-hovercard' => '074f0783',
|
||||||
'phui-hovercard-view-css' => '6ca90fa0',
|
'phui-hovercard-view-css' => '6ca90fa0',
|
||||||
'phui-icon-set-selector-css' => '7aa5f3ec',
|
'phui-icon-set-selector-css' => '7aa5f3ec',
|
||||||
'phui-icon-view-css' => '281f964d',
|
'phui-icon-view-css' => '4cbc684a',
|
||||||
'phui-image-mask-css' => '62c7f4d2',
|
'phui-image-mask-css' => '62c7f4d2',
|
||||||
'phui-info-view-css' => '37b8d9ce',
|
'phui-info-view-css' => '37b8d9ce',
|
||||||
'phui-inline-comment-view-css' => '48acce5b',
|
'phui-inline-comment-view-css' => '48acce5b',
|
||||||
@@ -834,12 +851,12 @@ return array(
|
|||||||
'phui-left-right-css' => '68513c34',
|
'phui-left-right-css' => '68513c34',
|
||||||
'phui-lightbox-css' => '4ebf22da',
|
'phui-lightbox-css' => '4ebf22da',
|
||||||
'phui-list-view-css' => '470b1adb',
|
'phui-list-view-css' => '470b1adb',
|
||||||
'phui-object-box-css' => '9b58483d',
|
'phui-object-box-css' => 'f434b6be',
|
||||||
'phui-oi-big-ui-css' => '9e037c7a',
|
'phui-oi-big-ui-css' => '534f1757',
|
||||||
'phui-oi-color-css' => 'b517bfa0',
|
'phui-oi-color-css' => 'b517bfa0',
|
||||||
'phui-oi-drag-ui-css' => 'da15d3dc',
|
'phui-oi-drag-ui-css' => 'da15d3dc',
|
||||||
'phui-oi-flush-ui-css' => '490e2e2e',
|
'phui-oi-flush-ui-css' => '490e2e2e',
|
||||||
'phui-oi-list-view-css' => '909f3844',
|
'phui-oi-list-view-css' => 'f14f2422',
|
||||||
'phui-oi-simple-ui-css' => '6a30fa46',
|
'phui-oi-simple-ui-css' => '6a30fa46',
|
||||||
'phui-pager-css' => 'd022c7ad',
|
'phui-pager-css' => 'd022c7ad',
|
||||||
'phui-pinboard-view-css' => '1f08f5d8',
|
'phui-pinboard-view-css' => '1f08f5d8',
|
||||||
@@ -848,17 +865,17 @@ return array(
|
|||||||
'phui-segment-bar-view-css' => '5166b370',
|
'phui-segment-bar-view-css' => '5166b370',
|
||||||
'phui-spacing-css' => 'b05cadc3',
|
'phui-spacing-css' => 'b05cadc3',
|
||||||
'phui-status-list-view-css' => 'e5ff8be0',
|
'phui-status-list-view-css' => 'e5ff8be0',
|
||||||
'phui-tag-view-css' => 'a42fe34f',
|
'phui-tag-view-css' => '29409667',
|
||||||
'phui-theme-css' => '35883b37',
|
'phui-theme-css' => '35883b37',
|
||||||
'phui-timeline-view-css' => '1e348e4b',
|
'phui-timeline-view-css' => '1e348e4b',
|
||||||
'phui-two-column-view-css' => '01e6991e',
|
'phui-two-column-view-css' => '01e6991e',
|
||||||
'phui-workboard-color-css' => 'e86de308',
|
'phui-workboard-color-css' => 'e86de308',
|
||||||
'phui-workboard-view-css' => '74fc9d98',
|
'phui-workboard-view-css' => '74fc9d98',
|
||||||
'phui-workcard-view-css' => '8c536f90',
|
'phui-workcard-view-css' => '9e9eb0df',
|
||||||
'phui-workpanel-view-css' => 'bd546a49',
|
'phui-workpanel-view-css' => '3ae89b20',
|
||||||
'phuix-action-list-view' => 'c68f183f',
|
'phuix-action-list-view' => 'c68f183f',
|
||||||
'phuix-action-view' => 'aaa08f3b',
|
'phuix-action-view' => 'aaa08f3b',
|
||||||
'phuix-autocomplete' => '58cc4ab8',
|
'phuix-autocomplete' => '2fbe234d',
|
||||||
'phuix-button-view' => '55a24e84',
|
'phuix-button-view' => '55a24e84',
|
||||||
'phuix-dropdown-menu' => 'bdce4d78',
|
'phuix-dropdown-menu' => 'bdce4d78',
|
||||||
'phuix-form-control-view' => '38c1f3fb',
|
'phuix-form-control-view' => '38c1f3fb',
|
||||||
@@ -867,7 +884,8 @@ return array(
|
|||||||
'policy-edit-css' => '8794e2ed',
|
'policy-edit-css' => '8794e2ed',
|
||||||
'policy-transaction-detail-css' => 'c02b8384',
|
'policy-transaction-detail-css' => 'c02b8384',
|
||||||
'ponder-view-css' => '05a09d0a',
|
'ponder-view-css' => '05a09d0a',
|
||||||
'project-card-view-css' => '3b1f7b20',
|
'project-card-view-css' => '4e7371cd',
|
||||||
|
'project-triggers-css' => 'cb866c2d',
|
||||||
'project-view-css' => '567858b3',
|
'project-view-css' => '567858b3',
|
||||||
'releeph-core' => 'f81ff2db',
|
'releeph-core' => 'f81ff2db',
|
||||||
'releeph-preview-branch' => '22db5c07',
|
'releeph-preview-branch' => '22db5c07',
|
||||||
@@ -877,10 +895,14 @@ return array(
|
|||||||
'sprite-login-css' => '18b368a6',
|
'sprite-login-css' => '18b368a6',
|
||||||
'sprite-tokens-css' => 'f1896dc5',
|
'sprite-tokens-css' => 'f1896dc5',
|
||||||
'syntax-default-css' => '055fc231',
|
'syntax-default-css' => '055fc231',
|
||||||
'syntax-highlighting-css' => '8a16f91b',
|
'syntax-highlighting-css' => '4234f572',
|
||||||
'tokens-css' => 'ce5a50bd',
|
'tokens-css' => 'ce5a50bd',
|
||||||
|
'trigger-rule' => '1c60c3fc',
|
||||||
|
'trigger-rule-control' => '5faf27b9',
|
||||||
|
'trigger-rule-editor' => 'b49fd60c',
|
||||||
|
'trigger-rule-type' => '4feea7d3',
|
||||||
'typeahead-browse-css' => 'b7ed02d2',
|
'typeahead-browse-css' => 'b7ed02d2',
|
||||||
'unhandled-exception-css' => '9da8fdab',
|
'unhandled-exception-css' => '9ecfc00d',
|
||||||
),
|
),
|
||||||
'requires' => array(
|
'requires' => array(
|
||||||
'01384686' => array(
|
'01384686' => array(
|
||||||
@@ -906,21 +928,22 @@ return array(
|
|||||||
'javelin-uri',
|
'javelin-uri',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
),
|
),
|
||||||
|
'0392a5d8' => array(
|
||||||
|
'javelin-install',
|
||||||
|
),
|
||||||
|
'03e8891f' => array(
|
||||||
|
'javelin-install',
|
||||||
|
),
|
||||||
|
'04023d82' => array(
|
||||||
|
'javelin-install',
|
||||||
|
'phuix-button-view',
|
||||||
|
),
|
||||||
'04f8a1e3' => array(
|
'04f8a1e3' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-workflow',
|
'javelin-workflow',
|
||||||
),
|
),
|
||||||
'05c74d65' => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-util',
|
|
||||||
'javelin-vector',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-workflow',
|
|
||||||
'javelin-workboard-controller',
|
|
||||||
),
|
|
||||||
'05d290ef' => array(
|
'05d290ef' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
@@ -995,19 +1018,23 @@ return array(
|
|||||||
'javelin-workflow',
|
'javelin-workflow',
|
||||||
'phuix-icon-view',
|
'phuix-icon-view',
|
||||||
),
|
),
|
||||||
|
'111bfd2d' => array(
|
||||||
|
'javelin-install',
|
||||||
|
),
|
||||||
'1325b731' => array(
|
'1325b731' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-uri',
|
'javelin-uri',
|
||||||
'phabricator-keyboard-shortcut',
|
'phabricator-keyboard-shortcut',
|
||||||
),
|
),
|
||||||
'1c850a26' => array(
|
'139ef688' => array(
|
||||||
'javelin-install',
|
|
||||||
'javelin-util',
|
|
||||||
),
|
|
||||||
'1c88f154' => array(
|
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
|
'javelin-util',
|
||||||
|
),
|
||||||
|
'1c850a26' => array(
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-util',
|
||||||
),
|
),
|
||||||
'1cab0e9a' => array(
|
'1cab0e9a' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
@@ -1104,6 +1131,9 @@ return array(
|
|||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
),
|
),
|
||||||
|
'2a61f8d4' => array(
|
||||||
|
'javelin-install',
|
||||||
|
),
|
||||||
'2a8b62d9' => array(
|
'2a8b62d9' => array(
|
||||||
'multirow-row-manager',
|
'multirow-row-manager',
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
@@ -1146,6 +1176,12 @@ return array(
|
|||||||
'phuix-autocomplete',
|
'phuix-autocomplete',
|
||||||
'javelin-mask',
|
'javelin-mask',
|
||||||
),
|
),
|
||||||
|
'2fbe234d' => array(
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-dom',
|
||||||
|
'phuix-icon-view',
|
||||||
|
'phabricator-prefab',
|
||||||
|
),
|
||||||
'308f9fe4' => array(
|
'308f9fe4' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
@@ -1154,6 +1190,11 @@ return array(
|
|||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
),
|
),
|
||||||
|
'32db8374' => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-dom',
|
||||||
|
),
|
||||||
34450586 => array(
|
34450586 => array(
|
||||||
'javelin-color',
|
'javelin-color',
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
@@ -1185,18 +1226,19 @@ return array(
|
|||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
|
'398fdf13' => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'trigger-rule-editor',
|
||||||
|
'trigger-rule',
|
||||||
|
'trigger-rule-type',
|
||||||
|
),
|
||||||
|
'3ae89b20' => array(
|
||||||
|
'phui-workcard-view-css',
|
||||||
|
),
|
||||||
'3b4899b0' => array(
|
'3b4899b0' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'phabricator-prefab',
|
'phabricator-prefab',
|
||||||
),
|
),
|
||||||
'3c6bd549' => array(
|
|
||||||
'javelin-install',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-util',
|
|
||||||
'javelin-vector',
|
|
||||||
'javelin-magical-init',
|
|
||||||
),
|
|
||||||
'3dc5ad43' => array(
|
'3dc5ad43' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
@@ -1217,9 +1259,8 @@ return array(
|
|||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-uri',
|
'javelin-uri',
|
||||||
),
|
),
|
||||||
'418f6684' => array(
|
'4234f572' => array(
|
||||||
'javelin-behavior',
|
'syntax-default-css',
|
||||||
'javelin-dom',
|
|
||||||
),
|
),
|
||||||
'42c7a5a7' => array(
|
'42c7a5a7' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
@@ -1251,15 +1292,6 @@ return array(
|
|||||||
'43bc9360' => array(
|
'43bc9360' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
),
|
),
|
||||||
'45d0b2b1' => array(
|
|
||||||
'javelin-install',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-util',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-workflow',
|
|
||||||
'phabricator-draggable-list',
|
|
||||||
'javelin-workboard-column',
|
|
||||||
),
|
|
||||||
'46116c01' => array(
|
'46116c01' => array(
|
||||||
'javelin-request',
|
'javelin-request',
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
@@ -1333,6 +1365,9 @@ return array(
|
|||||||
'javelin-sound',
|
'javelin-sound',
|
||||||
'phabricator-notification',
|
'phabricator-notification',
|
||||||
),
|
),
|
||||||
|
'4feea7d3' => array(
|
||||||
|
'trigger-rule-control',
|
||||||
|
),
|
||||||
'506aa3f4' => array(
|
'506aa3f4' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
@@ -1343,6 +1378,9 @@ return array(
|
|||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-fx',
|
'javelin-fx',
|
||||||
),
|
),
|
||||||
|
'534f1757' => array(
|
||||||
|
'phui-oi-list-view-css',
|
||||||
|
),
|
||||||
'541f81c3' => array(
|
'541f81c3' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
),
|
),
|
||||||
@@ -1355,6 +1393,18 @@ return array(
|
|||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
|
'5793d835' => array(
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-util',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-typeahead',
|
||||||
|
'javelin-tokenizer',
|
||||||
|
'javelin-typeahead-preloaded-source',
|
||||||
|
'javelin-typeahead-ondemand-source',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-util',
|
||||||
|
),
|
||||||
'5803b9e7' => array(
|
'5803b9e7' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
@@ -1363,12 +1413,6 @@ return array(
|
|||||||
'javelin-vector',
|
'javelin-vector',
|
||||||
'javelin-typeahead-static-source',
|
'javelin-typeahead-static-source',
|
||||||
),
|
),
|
||||||
'58cc4ab8' => array(
|
|
||||||
'javelin-install',
|
|
||||||
'javelin-dom',
|
|
||||||
'phuix-icon-view',
|
|
||||||
'phabricator-prefab',
|
|
||||||
),
|
|
||||||
'5902260c' => array(
|
'5902260c' => array(
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
'javelin-magical-init',
|
'javelin-magical-init',
|
||||||
@@ -1409,6 +1453,9 @@ return array(
|
|||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'phuix-dropdown-menu',
|
'phuix-dropdown-menu',
|
||||||
),
|
),
|
||||||
|
'5faf27b9' => array(
|
||||||
|
'phuix-form-control-view',
|
||||||
|
),
|
||||||
'600f440c' => array(
|
'600f440c' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
@@ -1488,9 +1535,6 @@ return array(
|
|||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-uri',
|
'javelin-uri',
|
||||||
),
|
),
|
||||||
73660575 => array(
|
|
||||||
'phui-inline-comment-view-css',
|
|
||||||
),
|
|
||||||
'73ecc1f8' => array(
|
'73ecc1f8' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-behavior-device',
|
'javelin-behavior-device',
|
||||||
@@ -1550,17 +1594,6 @@ return array(
|
|||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-vector',
|
'javelin-vector',
|
||||||
),
|
),
|
||||||
'8400307c' => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-workflow',
|
|
||||||
'phabricator-draggable-list',
|
|
||||||
),
|
|
||||||
'8573dc1b' => array(
|
|
||||||
'javelin-install',
|
|
||||||
'javelin-workboard-card',
|
|
||||||
),
|
|
||||||
'87428eb2' => array(
|
'87428eb2' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-diffusion-locate-file-source',
|
'javelin-diffusion-locate-file-source',
|
||||||
@@ -1579,9 +1612,6 @@ return array(
|
|||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
),
|
),
|
||||||
'8a16f91b' => array(
|
|
||||||
'syntax-default-css',
|
|
||||||
),
|
|
||||||
'8ac32fd9' => array(
|
'8ac32fd9' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
@@ -1609,6 +1639,10 @@ return array(
|
|||||||
'phabricator-shaped-request',
|
'phabricator-shaped-request',
|
||||||
'conpherence-thread-manager',
|
'conpherence-thread-manager',
|
||||||
),
|
),
|
||||||
|
'8e0aa661' => array(
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-dom',
|
||||||
|
),
|
||||||
'8f959ad0' => array(
|
'8f959ad0' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
@@ -1693,9 +1727,6 @@ return array(
|
|||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-router',
|
'javelin-router',
|
||||||
),
|
),
|
||||||
'9a513421' => array(
|
|
||||||
'javelin-install',
|
|
||||||
),
|
|
||||||
'9aae2b66' => array(
|
'9aae2b66' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
@@ -1713,9 +1744,6 @@ return array(
|
|||||||
'javelin-uri',
|
'javelin-uri',
|
||||||
'phabricator-textareautils',
|
'phabricator-textareautils',
|
||||||
),
|
),
|
||||||
'9e037c7a' => array(
|
|
||||||
'phui-oi-list-view-css',
|
|
||||||
),
|
|
||||||
'9f081f05' => array(
|
'9f081f05' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
@@ -1801,6 +1829,16 @@ return array(
|
|||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
),
|
),
|
||||||
|
'aad45445' => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-util',
|
||||||
|
'javelin-vector',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-workflow',
|
||||||
|
'javelin-workboard-controller',
|
||||||
|
'javelin-workboard-drop-effect',
|
||||||
|
),
|
||||||
'ab85e184' => array(
|
'ab85e184' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
@@ -1844,6 +1882,10 @@ return array(
|
|||||||
'b347a301' => array(
|
'b347a301' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
),
|
),
|
||||||
|
'b49fd60c' => array(
|
||||||
|
'multirow-row-manager',
|
||||||
|
'trigger-rule',
|
||||||
|
),
|
||||||
'b517bfa0' => array(
|
'b517bfa0' => array(
|
||||||
'phui-oi-list-view-css',
|
'phui-oi-list-view-css',
|
||||||
),
|
),
|
||||||
@@ -1882,13 +1924,6 @@ return array(
|
|||||||
'javelin-uri',
|
'javelin-uri',
|
||||||
'phabricator-notification',
|
'phabricator-notification',
|
||||||
),
|
),
|
||||||
'b91204e9' => array(
|
|
||||||
'javelin-install',
|
|
||||||
'phuix-button-view',
|
|
||||||
),
|
|
||||||
'bd546a49' => array(
|
|
||||||
'phui-workcard-view-css',
|
|
||||||
),
|
|
||||||
'bdce4d78' => array(
|
'bdce4d78' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
@@ -1896,21 +1931,30 @@ return array(
|
|||||||
'javelin-vector',
|
'javelin-vector',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
),
|
),
|
||||||
'bf457520' => array(
|
'bde53589' => array(
|
||||||
|
'phui-inline-comment-view-css',
|
||||||
|
),
|
||||||
|
'c02a5497' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
|
'javelin-dom',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
'javelin-dom',
|
|
||||||
'javelin-typeahead',
|
|
||||||
'javelin-tokenizer',
|
|
||||||
'javelin-typeahead-preloaded-source',
|
|
||||||
'javelin-typeahead-ondemand-source',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-util',
|
'javelin-workflow',
|
||||||
|
'phabricator-draggable-list',
|
||||||
|
'javelin-workboard-column',
|
||||||
|
'javelin-workboard-header-template',
|
||||||
|
'javelin-workboard-card-template',
|
||||||
|
'javelin-workboard-order-template',
|
||||||
),
|
),
|
||||||
'c03f2fb4' => array(
|
'c03f2fb4' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
),
|
),
|
||||||
|
'c15122b4' => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-uri',
|
||||||
|
),
|
||||||
'c2c500a7' => array(
|
'c2c500a7' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
@@ -1922,6 +1966,11 @@ return array(
|
|||||||
'phabricator-phtize',
|
'phabricator-phtize',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
|
'c3d24e63' => array(
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-workboard-card',
|
||||||
|
'javelin-workboard-header',
|
||||||
|
),
|
||||||
'c687e867' => array(
|
'c687e867' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
@@ -1961,16 +2010,29 @@ return array(
|
|||||||
'javelin-util',
|
'javelin-util',
|
||||||
'phabricator-keyboard-shortcut-manager',
|
'phabricator-keyboard-shortcut-manager',
|
||||||
),
|
),
|
||||||
|
'c9ad6f70' => array(
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-util',
|
||||||
|
'javelin-vector',
|
||||||
|
'javelin-magical-init',
|
||||||
|
),
|
||||||
'cf32921f' => array(
|
'cf32921f' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
),
|
),
|
||||||
'cffd39b4' => array(
|
'd0a85a85' => array(
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-workflow',
|
||||||
|
'javelin-router',
|
||||||
|
'javelin-behavior-device',
|
||||||
|
'javelin-vector',
|
||||||
|
'phabricator-diff-inline',
|
||||||
),
|
),
|
||||||
'd12d214f' => array(
|
'd12d214f' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
@@ -1982,6 +2044,9 @@ return array(
|
|||||||
'd3799cb4' => array(
|
'd3799cb4' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
),
|
),
|
||||||
|
'd4cc2d2a' => array(
|
||||||
|
'javelin-install',
|
||||||
|
),
|
||||||
'd8a86cfb' => array(
|
'd8a86cfb' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
@@ -1996,12 +2061,6 @@ return array(
|
|||||||
'javelin-uri',
|
'javelin-uri',
|
||||||
'phabricator-notification',
|
'phabricator-notification',
|
||||||
),
|
),
|
||||||
'db0c0214' => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-uri',
|
|
||||||
),
|
|
||||||
'dfa1d313' => array(
|
'dfa1d313' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
@@ -2022,14 +2081,6 @@ return array(
|
|||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'javelin-history',
|
'javelin-history',
|
||||||
),
|
),
|
||||||
'e18685c0' => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-stratcom',
|
|
||||||
),
|
|
||||||
'e562708c' => array(
|
|
||||||
'javelin-install',
|
|
||||||
),
|
|
||||||
'e5bdb730' => array(
|
'e5bdb730' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
@@ -2037,17 +2088,6 @@ return array(
|
|||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'phabricator-draggable-list',
|
'phabricator-draggable-list',
|
||||||
),
|
),
|
||||||
'e7cf10d6' => array(
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-util',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-install',
|
|
||||||
'javelin-workflow',
|
|
||||||
'javelin-router',
|
|
||||||
'javelin-behavior-device',
|
|
||||||
'javelin-vector',
|
|
||||||
'phabricator-diff-inline',
|
|
||||||
),
|
|
||||||
'e8240b50' => array(
|
'e8240b50' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
@@ -2068,6 +2108,9 @@ return array(
|
|||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-event',
|
'javelin-event',
|
||||||
),
|
),
|
||||||
|
'ebe83a6b' => array(
|
||||||
|
'javelin-install',
|
||||||
|
),
|
||||||
'ec4e31c0' => array(
|
'ec4e31c0' => array(
|
||||||
'phui-timeline-view-css',
|
'phui-timeline-view-css',
|
||||||
),
|
),
|
||||||
@@ -2079,6 +2122,11 @@ return array(
|
|||||||
'phabricator-keyboard-shortcut',
|
'phabricator-keyboard-shortcut',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
),
|
),
|
||||||
|
'ef836bf2' => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-stratcom',
|
||||||
|
),
|
||||||
'f166c949' => array(
|
'f166c949' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-behavior-device',
|
'javelin-behavior-device',
|
||||||
@@ -2109,7 +2157,7 @@ return array(
|
|||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
'f5c78ae3' => array(
|
'f84bcbf4' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
@@ -2141,6 +2189,10 @@ return array(
|
|||||||
'owners-path-editor',
|
'owners-path-editor',
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
),
|
),
|
||||||
|
'ff7b3f22' => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'javelin-dom',
|
||||||
|
),
|
||||||
),
|
),
|
||||||
'packages' => array(
|
'packages' => array(
|
||||||
'conpherence.pkg.css' => array(
|
'conpherence.pkg.css' => array(
|
||||||
@@ -2333,7 +2385,6 @@ return array(
|
|||||||
'javelin-behavior-aphront-drag-and-drop-textarea',
|
'javelin-behavior-aphront-drag-and-drop-textarea',
|
||||||
'javelin-behavior-phabricator-object-selector',
|
'javelin-behavior-phabricator-object-selector',
|
||||||
'javelin-behavior-repository-crossreference',
|
'javelin-behavior-repository-crossreference',
|
||||||
'javelin-behavior-differential-user-select',
|
|
||||||
'javelin-behavior-aphront-more',
|
'javelin-behavior-aphront-more',
|
||||||
'phabricator-diff-inline',
|
'phabricator-diff-inline',
|
||||||
'phabricator-diff-changeset',
|
'phabricator-diff-changeset',
|
||||||
@@ -2352,7 +2403,6 @@ return array(
|
|||||||
),
|
),
|
||||||
'maniphest.pkg.js' => array(
|
'maniphest.pkg.js' => array(
|
||||||
'javelin-behavior-maniphest-batch-selector',
|
'javelin-behavior-maniphest-batch-selector',
|
||||||
'javelin-behavior-maniphest-subpriority-editor',
|
|
||||||
'javelin-behavior-maniphest-list-editor',
|
'javelin-behavior-maniphest-list-editor',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -199,7 +199,6 @@ return array(
|
|||||||
'javelin-behavior-phabricator-object-selector',
|
'javelin-behavior-phabricator-object-selector',
|
||||||
'javelin-behavior-repository-crossreference',
|
'javelin-behavior-repository-crossreference',
|
||||||
|
|
||||||
'javelin-behavior-differential-user-select',
|
|
||||||
'javelin-behavior-aphront-more',
|
'javelin-behavior-aphront-more',
|
||||||
|
|
||||||
'phabricator-diff-inline',
|
'phabricator-diff-inline',
|
||||||
@@ -219,7 +218,6 @@ return array(
|
|||||||
),
|
),
|
||||||
'maniphest.pkg.js' => array(
|
'maniphest.pkg.js' => array(
|
||||||
'javelin-behavior-maniphest-batch-selector',
|
'javelin-behavior-maniphest-batch-selector',
|
||||||
'javelin-behavior-maniphest-subpriority-editor',
|
|
||||||
'javelin-behavior-maniphest-list-editor',
|
'javelin-behavior-maniphest-list-editor',
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new PhabricatorOwnersPackage();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $package) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$package->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new AlmanacDevice();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $device) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$device->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new AlmanacService();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $service) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$service->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new AlmanacNetwork();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $network) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$network->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new HarbormasterBuildPlan();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $plan) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$plan->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new DrydockBlueprint();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $blueprint) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$blueprint->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new NuanceSource();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $source) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$source->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new PhabricatorBadgesBadge();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $badge) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$badge->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new PhabricatorPhurlURL();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $url) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$url->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new ConpherenceThread();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $thread) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$thread->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,21 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table_db = new PhabricatorDashboard();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table_db) as $dashboard) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$dashboard->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|
||||||
$table_dbp = new PhabricatorDashboardPanel();
|
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table_dbp) as $panel) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$panel->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new PhabricatorProject();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $project) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$project->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,11 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$table = new PonderQuestion();
|
// This was an old reindexing migration that has been obsoleted. See T13253.
|
||||||
|
|
||||||
foreach (new LiskMigrationIterator($table) as $question) {
|
|
||||||
PhabricatorSearchWorker::queueDocumentForIndexing(
|
|
||||||
$question->getPHID(),
|
|
||||||
array(
|
|
||||||
'force' => true,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
UPDATE {$NAMESPACE}_legalpad.legalpad_documentsignature
|
||||||
|
SET signerPHID = NULL WHERE signerPHID LIKE 'PHID-XUSR-%';
|
||||||
2
resources/sql/autopatches/20190206.external.02.email.sql
Normal file
2
resources/sql/autopatches/20190206.external.02.email.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
DELETE FROM {$NAMESPACE}_user.user_externalaccount
|
||||||
|
WHERE accountType = 'email';
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_user.user_externalaccount
|
||||||
|
ADD providerConfigPHID VARBINARY(64) NOT NULL;
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$account_table = new PhabricatorExternalAccount();
|
||||||
|
$account_conn = $account_table->establishConnection('w');
|
||||||
|
$table_name = $account_table->getTableName();
|
||||||
|
|
||||||
|
$config_table = new PhabricatorAuthProviderConfig();
|
||||||
|
$config_conn = $config_table->establishConnection('w');
|
||||||
|
|
||||||
|
foreach (new LiskRawMigrationIterator($account_conn, $table_name) as $row) {
|
||||||
|
if (strlen($row['providerConfigPHID'])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$config_row = queryfx_one(
|
||||||
|
$config_conn,
|
||||||
|
'SELECT phid
|
||||||
|
FROM %R
|
||||||
|
WHERE providerType = %s AND providerDomain = %s
|
||||||
|
LIMIT 1',
|
||||||
|
$config_table,
|
||||||
|
$row['accountType'],
|
||||||
|
$row['accountDomain']);
|
||||||
|
if (!$config_row) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
queryfx(
|
||||||
|
$account_conn,
|
||||||
|
'UPDATE %R
|
||||||
|
SET providerConfigPHID = %s
|
||||||
|
WHERE id = %d',
|
||||||
|
$account_table,
|
||||||
|
$config_row['phid'],
|
||||||
|
$row['id']);
|
||||||
|
}
|
||||||
2
resources/sql/autopatches/20190207.packages.01.state.sql
Normal file
2
resources/sql/autopatches/20190207.packages.01.state.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_owners.owners_package
|
||||||
|
ADD auditingState VARCHAR(32) NOT NULL COLLATE {$COLLATE_TEXT};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
UPDATE {$NAMESPACE}_owners.owners_package
|
||||||
|
SET auditingState = IF(auditingEnabled = 0, 'none', 'audit');
|
||||||
2
resources/sql/autopatches/20190207.packages.03.drop.sql
Normal file
2
resources/sql/autopatches/20190207.packages.03.drop.sql
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_owners.owners_package
|
||||||
|
DROP auditingEnabled;
|
||||||
41
resources/sql/autopatches/20190207.packages.04.xactions.php
Normal file
41
resources/sql/autopatches/20190207.packages.04.xactions.php
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
$table = new PhabricatorOwnersPackageTransaction();
|
||||||
|
$conn = $table->establishConnection('w');
|
||||||
|
$iterator = new LiskRawMigrationIterator($conn, $table->getTableName());
|
||||||
|
|
||||||
|
// Migrate "Auditing State" transactions for Owners Packages from old values
|
||||||
|
// (which were "0" or "1", as JSON integer literals, without quotes) to new
|
||||||
|
// values (which are JSON strings, with quotes).
|
||||||
|
|
||||||
|
foreach ($iterator as $row) {
|
||||||
|
if ($row['transactionType'] !== 'owners.auditing') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$old_value = (int)$row['oldValue'];
|
||||||
|
$new_value = (int)$row['newValue'];
|
||||||
|
|
||||||
|
if (!$old_value) {
|
||||||
|
$old_value = 'none';
|
||||||
|
} else {
|
||||||
|
$old_value = 'audit';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$new_value) {
|
||||||
|
$new_value = 'none';
|
||||||
|
} else {
|
||||||
|
$new_value = 'audit';
|
||||||
|
}
|
||||||
|
|
||||||
|
$old_value = phutil_json_encode($old_value);
|
||||||
|
$new_value = phutil_json_encode($new_value);
|
||||||
|
|
||||||
|
queryfx(
|
||||||
|
$conn,
|
||||||
|
'UPDATE %R SET oldValue = %s, newValue = %s WHERE id = %d',
|
||||||
|
$table,
|
||||||
|
$old_value,
|
||||||
|
$new_value,
|
||||||
|
$row['id']);
|
||||||
|
}
|
||||||
21
resources/sql/autopatches/20190215.daemons.01.dropdataid.php
Normal file
21
resources/sql/autopatches/20190215.daemons.01.dropdataid.php
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// See T6615. We're about to change the nullability on the "dataID" column,
|
||||||
|
// but it may have a UNIQUE KEY on it. Make sure we get rid of this key first
|
||||||
|
// so we don't run into trouble.
|
||||||
|
|
||||||
|
// There's no "IF EXISTS" modifier for "ALTER TABLE" so run this as a PHP patch
|
||||||
|
// instead of an SQL patch.
|
||||||
|
|
||||||
|
$table = new PhabricatorWorkerActiveTask();
|
||||||
|
$conn = $table->establishConnection('w');
|
||||||
|
|
||||||
|
try {
|
||||||
|
queryfx(
|
||||||
|
$conn,
|
||||||
|
'ALTER TABLE %R DROP KEY %T',
|
||||||
|
$table,
|
||||||
|
'dataID');
|
||||||
|
} catch (AphrontQueryException $ex) {
|
||||||
|
// Ignore.
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_worker.worker_activetask
|
||||||
|
CHANGE dataID dataID INT UNSIGNED NOT NULL;
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_harbormaster.harbormaster_string (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
stringIndex BINARY(12) NOT NULL,
|
||||||
|
stringValue LONGTEXT NOT NULL,
|
||||||
|
UNIQUE KEY `key_string` (stringIndex)
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_harbormaster.harbormaster_buildunitmessage
|
||||||
|
ADD nameIndex BINARY(12) NOT NULL;
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_worker.worker_archivetask
|
||||||
|
ADD archivedEpoch INT UNSIGNED NULL;
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_worker.worker_activetask
|
||||||
|
ADD dateCreated int unsigned NOT NULL,
|
||||||
|
ADD dateModified int unsigned NOT NULL;
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_harbormaster.harbormaster_buildplan
|
||||||
|
ADD properties LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
UPDATE {$NAMESPACE}_harbormaster.harbormaster_buildplan
|
||||||
|
SET properties = '{}' WHERE properties = '';
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
DROP TABLE {$NAMESPACE}_herald.herald_ruletransaction_comment;
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_project.project_trigger (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
phid VARBINARY(64) NOT NULL,
|
||||||
|
name VARCHAR(255) NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
editPolicy VARBINARY(64) NOT NULL,
|
||||||
|
ruleset LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
dateModified INT UNSIGNED NOT NULL
|
||||||
|
) ENGINE=InnoDB, COLLATE {$COLLATE_TEXT};
|
||||||
19
resources/sql/autopatches/20190312.triggers.02.xaction.sql
Normal file
19
resources/sql/autopatches/20190312.triggers.02.xaction.sql
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_project.project_triggertransaction (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
phid VARBINARY(64) NOT NULL,
|
||||||
|
authorPHID VARBINARY(64) NOT NULL,
|
||||||
|
objectPHID VARBINARY(64) NOT NULL,
|
||||||
|
viewPolicy VARBINARY(64) NOT NULL,
|
||||||
|
editPolicy VARBINARY(64) NOT NULL,
|
||||||
|
commentPHID VARBINARY(64) DEFAULT NULL,
|
||||||
|
commentVersion INT UNSIGNED NOT NULL,
|
||||||
|
transactionType VARCHAR(32) NOT NULL,
|
||||||
|
oldValue LONGTEXT NOT NULL,
|
||||||
|
newValue LONGTEXT NOT NULL,
|
||||||
|
contentSource LONGTEXT NOT NULL,
|
||||||
|
metadata LONGTEXT NOT NULL,
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
dateModified INT UNSIGNED NOT NULL,
|
||||||
|
UNIQUE KEY `key_phid` (`phid`),
|
||||||
|
KEY `key_object` (`objectPHID`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE {$COLLATE_TEXT};
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ALTER TABLE {$NAMESPACE}_project.project_column
|
||||||
|
ADD triggerPHID VARBINARY(64);
|
||||||
8
resources/sql/autopatches/20190322.triggers.01.usage.sql
Normal file
8
resources/sql/autopatches/20190322.triggers.01.usage.sql
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_project.project_triggerusage (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
triggerPHID VARBINARY(64) NOT NULL,
|
||||||
|
examplePHID VARBINARY(64),
|
||||||
|
columnCount INT UNSIGNED NOT NULL,
|
||||||
|
activeColumnCount INT UNSIGNED NOT NULL,
|
||||||
|
UNIQUE KEY `key_trigger` (triggerPHID)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE {$COLLATE_TEXT};
|
||||||
11
resources/sql/autopatches/20190329.portals.01.create.sql
Normal file
11
resources/sql/autopatches/20190329.portals.01.create.sql
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_dashboard.dashboard_portal (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
phid VARBINARY(64) NOT NULL,
|
||||||
|
name VARCHAR(255) NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
status VARCHAR(32) NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
viewPolicy VARBINARY(64) NOT NULL,
|
||||||
|
editPolicy VARBINARY(64) NOT NULL,
|
||||||
|
properties LONGTEXT NOT NULL COLLATE {$COLLATE_TEXT},
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
dateModified INT UNSIGNED NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE {$COLLATE_TEXT};
|
||||||
19
resources/sql/autopatches/20190329.portals.02.xaction.sql
Normal file
19
resources/sql/autopatches/20190329.portals.02.xaction.sql
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
CREATE TABLE {$NAMESPACE}_dashboard.dashboard_portaltransaction (
|
||||||
|
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
phid VARBINARY(64) NOT NULL,
|
||||||
|
authorPHID VARBINARY(64) NOT NULL,
|
||||||
|
objectPHID VARBINARY(64) NOT NULL,
|
||||||
|
viewPolicy VARBINARY(64) NOT NULL,
|
||||||
|
editPolicy VARBINARY(64) NOT NULL,
|
||||||
|
commentPHID VARBINARY(64) DEFAULT NULL,
|
||||||
|
commentVersion INT UNSIGNED NOT NULL,
|
||||||
|
transactionType VARCHAR(32) NOT NULL,
|
||||||
|
oldValue LONGTEXT NOT NULL,
|
||||||
|
newValue LONGTEXT NOT NULL,
|
||||||
|
contentSource LONGTEXT NOT NULL,
|
||||||
|
metadata LONGTEXT NOT NULL,
|
||||||
|
dateCreated INT UNSIGNED NOT NULL,
|
||||||
|
dateModified INT UNSIGNED NOT NULL,
|
||||||
|
UNIQUE KEY `key_phid` (`phid`),
|
||||||
|
KEY `key_object` (`objectPHID`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE {$COLLATE_TEXT};
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
ALTER IGNORE TABLE `{$NAMESPACE}_file`.`file_imagemacro`
|
ALTER TABLE `{$NAMESPACE}_file`.`file_imagemacro`
|
||||||
ADD UNIQUE `name` (`name`);
|
ADD UNIQUE KEY `name` (`name`);
|
||||||
|
|||||||
@@ -1,66 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// NOTE: We aren't using PhabricatorUserOAuthInfo anywhere here because it is
|
|
||||||
// getting nuked in a future diff.
|
|
||||||
|
|
||||||
$table = new PhabricatorUser();
|
$table = new PhabricatorUser();
|
||||||
|
$conn = $table->establishConnection('w');
|
||||||
$table_name = 'user_oauthinfo';
|
$table_name = 'user_oauthinfo';
|
||||||
$conn_w = $table->establishConnection('w');
|
|
||||||
|
|
||||||
$xaccount = new PhabricatorExternalAccount();
|
foreach (new LiskRawMigrationIterator($conn, $table_name) as $row) {
|
||||||
|
throw new Exception(
|
||||||
echo pht('Migrating OAuth to %s...', 'ExternalAccount')."\n";
|
pht(
|
||||||
|
'Your Phabricator install has ancient OAuth account data and is '.
|
||||||
$domain_map = array(
|
'too old to upgrade directly to a modern version of Phabricator. '.
|
||||||
'disqus' => 'disqus.com',
|
'Upgrade to a version released between June 2013 and February 2019 '.
|
||||||
'facebook' => 'facebook.com',
|
'first, then upgrade to a modern version.'));
|
||||||
'github' => 'github.com',
|
|
||||||
'google' => 'google.com',
|
|
||||||
);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$phabricator_oauth_uri = new PhutilURI(
|
|
||||||
PhabricatorEnv::getEnvConfig('phabricator.oauth-uri'));
|
|
||||||
$domain_map['phabricator'] = $phabricator_oauth_uri->getDomain();
|
|
||||||
} catch (Exception $ex) {
|
|
||||||
// Ignore; this likely indicates that we have removed `phabricator.oauth-uri`
|
|
||||||
// in some future diff.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$rows = queryfx_all(
|
|
||||||
$conn_w,
|
|
||||||
'SELECT * FROM user_oauthinfo');
|
|
||||||
foreach ($rows as $row) {
|
|
||||||
echo pht('Migrating row ID #%d.', $row['id'])."\n";
|
|
||||||
$user = id(new PhabricatorUser())->loadOneWhere(
|
|
||||||
'id = %d',
|
|
||||||
$row['userID']);
|
|
||||||
if (!$user) {
|
|
||||||
echo pht('Bad user ID!')."\n";
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$domain = idx($domain_map, $row['oauthProvider']);
|
|
||||||
if (empty($domain)) {
|
|
||||||
echo pht('Unknown OAuth provider!')."\n";
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$xaccount = id(new PhabricatorExternalAccount())
|
|
||||||
->setUserPHID($user->getPHID())
|
|
||||||
->setAccountType($row['oauthProvider'])
|
|
||||||
->setAccountDomain($domain)
|
|
||||||
->setAccountID($row['oauthUID'])
|
|
||||||
->setAccountURI($row['accountURI'])
|
|
||||||
->setUsername($row['accountName'])
|
|
||||||
->setDateCreated($row['dateCreated']);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$xaccount->save();
|
|
||||||
} catch (Exception $ex) {
|
|
||||||
phlog($ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
echo pht('Done.')."\n";
|
|
||||||
|
|||||||
@@ -1,41 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// NOTE: We aren't using PhabricatorUserLDAPInfo anywhere here because it is
|
|
||||||
// being nuked by this change
|
|
||||||
|
|
||||||
$table = new PhabricatorUser();
|
$table = new PhabricatorUser();
|
||||||
|
$conn = $table->establishConnection('w');
|
||||||
$table_name = 'user_ldapinfo';
|
$table_name = 'user_ldapinfo';
|
||||||
$conn_w = $table->establishConnection('w');
|
|
||||||
|
|
||||||
$xaccount = new PhabricatorExternalAccount();
|
foreach (new LiskRawMigrationIterator($conn, $table_name) as $row) {
|
||||||
|
throw new Exception(
|
||||||
echo pht('Migrating LDAP to %s...', 'ExternalAccount')."\n";
|
pht(
|
||||||
|
'Your Phabricator install has ancient LDAP account data and is '.
|
||||||
$rows = queryfx_all($conn_w, 'SELECT * FROM %T', $table_name);
|
'too old to upgrade directly to a modern version of Phabricator. '.
|
||||||
foreach ($rows as $row) {
|
'Upgrade to a version released between June 2013 and February 2019 '.
|
||||||
echo pht('Migrating row ID #%d.', $row['id'])."\n";
|
'first, then upgrade to a modern version.'));
|
||||||
$user = id(new PhabricatorUser())->loadOneWhere(
|
|
||||||
'id = %d',
|
|
||||||
$row['userID']);
|
|
||||||
if (!$user) {
|
|
||||||
echo pht('Bad user ID!')."\n";
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$xaccount = id(new PhabricatorExternalAccount())
|
|
||||||
->setUserPHID($user->getPHID())
|
|
||||||
->setAccountType('ldap')
|
|
||||||
->setAccountDomain('self')
|
|
||||||
->setAccountID($row['ldapUsername'])
|
|
||||||
->setUsername($row['ldapUsername'])
|
|
||||||
->setDateCreated($row['dateCreated']);
|
|
||||||
|
|
||||||
try {
|
|
||||||
$xaccount->save();
|
|
||||||
} catch (Exception $ex) {
|
|
||||||
phlog($ex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
echo pht('Done.')."\n";
|
|
||||||
|
|||||||
@@ -653,6 +653,7 @@ phutil_register_library_map(array(
|
|||||||
'DifferentialRevisionUpdateTransaction' => 'applications/differential/xaction/DifferentialRevisionUpdateTransaction.php',
|
'DifferentialRevisionUpdateTransaction' => 'applications/differential/xaction/DifferentialRevisionUpdateTransaction.php',
|
||||||
'DifferentialRevisionViewController' => 'applications/differential/controller/DifferentialRevisionViewController.php',
|
'DifferentialRevisionViewController' => 'applications/differential/controller/DifferentialRevisionViewController.php',
|
||||||
'DifferentialRevisionVoidTransaction' => 'applications/differential/xaction/DifferentialRevisionVoidTransaction.php',
|
'DifferentialRevisionVoidTransaction' => 'applications/differential/xaction/DifferentialRevisionVoidTransaction.php',
|
||||||
|
'DifferentialRevisionWrongBuildsTransaction' => 'applications/differential/xaction/DifferentialRevisionWrongBuildsTransaction.php',
|
||||||
'DifferentialRevisionWrongStateTransaction' => 'applications/differential/xaction/DifferentialRevisionWrongStateTransaction.php',
|
'DifferentialRevisionWrongStateTransaction' => 'applications/differential/xaction/DifferentialRevisionWrongStateTransaction.php',
|
||||||
'DifferentialSchemaSpec' => 'applications/differential/storage/DifferentialSchemaSpec.php',
|
'DifferentialSchemaSpec' => 'applications/differential/storage/DifferentialSchemaSpec.php',
|
||||||
'DifferentialSetDiffPropertyConduitAPIMethod' => 'applications/differential/conduit/DifferentialSetDiffPropertyConduitAPIMethod.php',
|
'DifferentialSetDiffPropertyConduitAPIMethod' => 'applications/differential/conduit/DifferentialSetDiffPropertyConduitAPIMethod.php',
|
||||||
@@ -1328,18 +1329,26 @@ phutil_register_library_map(array(
|
|||||||
'HarbormasterBuildMessageQuery' => 'applications/harbormaster/query/HarbormasterBuildMessageQuery.php',
|
'HarbormasterBuildMessageQuery' => 'applications/harbormaster/query/HarbormasterBuildMessageQuery.php',
|
||||||
'HarbormasterBuildPHIDType' => 'applications/harbormaster/phid/HarbormasterBuildPHIDType.php',
|
'HarbormasterBuildPHIDType' => 'applications/harbormaster/phid/HarbormasterBuildPHIDType.php',
|
||||||
'HarbormasterBuildPlan' => 'applications/harbormaster/storage/configuration/HarbormasterBuildPlan.php',
|
'HarbormasterBuildPlan' => 'applications/harbormaster/storage/configuration/HarbormasterBuildPlan.php',
|
||||||
|
'HarbormasterBuildPlanBehavior' => 'applications/harbormaster/plan/HarbormasterBuildPlanBehavior.php',
|
||||||
|
'HarbormasterBuildPlanBehaviorOption' => 'applications/harbormaster/plan/HarbormasterBuildPlanBehaviorOption.php',
|
||||||
|
'HarbormasterBuildPlanBehaviorTransaction' => 'applications/harbormaster/xaction/plan/HarbormasterBuildPlanBehaviorTransaction.php',
|
||||||
'HarbormasterBuildPlanDatasource' => 'applications/harbormaster/typeahead/HarbormasterBuildPlanDatasource.php',
|
'HarbormasterBuildPlanDatasource' => 'applications/harbormaster/typeahead/HarbormasterBuildPlanDatasource.php',
|
||||||
'HarbormasterBuildPlanDefaultEditCapability' => 'applications/harbormaster/capability/HarbormasterBuildPlanDefaultEditCapability.php',
|
'HarbormasterBuildPlanDefaultEditCapability' => 'applications/harbormaster/capability/HarbormasterBuildPlanDefaultEditCapability.php',
|
||||||
'HarbormasterBuildPlanDefaultViewCapability' => 'applications/harbormaster/capability/HarbormasterBuildPlanDefaultViewCapability.php',
|
'HarbormasterBuildPlanDefaultViewCapability' => 'applications/harbormaster/capability/HarbormasterBuildPlanDefaultViewCapability.php',
|
||||||
|
'HarbormasterBuildPlanEditAPIMethod' => 'applications/harbormaster/conduit/HarbormasterBuildPlanEditAPIMethod.php',
|
||||||
'HarbormasterBuildPlanEditEngine' => 'applications/harbormaster/editor/HarbormasterBuildPlanEditEngine.php',
|
'HarbormasterBuildPlanEditEngine' => 'applications/harbormaster/editor/HarbormasterBuildPlanEditEngine.php',
|
||||||
'HarbormasterBuildPlanEditor' => 'applications/harbormaster/editor/HarbormasterBuildPlanEditor.php',
|
'HarbormasterBuildPlanEditor' => 'applications/harbormaster/editor/HarbormasterBuildPlanEditor.php',
|
||||||
'HarbormasterBuildPlanNameNgrams' => 'applications/harbormaster/storage/configuration/HarbormasterBuildPlanNameNgrams.php',
|
'HarbormasterBuildPlanNameNgrams' => 'applications/harbormaster/storage/configuration/HarbormasterBuildPlanNameNgrams.php',
|
||||||
|
'HarbormasterBuildPlanNameTransaction' => 'applications/harbormaster/xaction/plan/HarbormasterBuildPlanNameTransaction.php',
|
||||||
'HarbormasterBuildPlanPHIDType' => 'applications/harbormaster/phid/HarbormasterBuildPlanPHIDType.php',
|
'HarbormasterBuildPlanPHIDType' => 'applications/harbormaster/phid/HarbormasterBuildPlanPHIDType.php',
|
||||||
|
'HarbormasterBuildPlanPolicyCodex' => 'applications/harbormaster/codex/HarbormasterBuildPlanPolicyCodex.php',
|
||||||
'HarbormasterBuildPlanQuery' => 'applications/harbormaster/query/HarbormasterBuildPlanQuery.php',
|
'HarbormasterBuildPlanQuery' => 'applications/harbormaster/query/HarbormasterBuildPlanQuery.php',
|
||||||
'HarbormasterBuildPlanSearchAPIMethod' => 'applications/harbormaster/conduit/HarbormasterBuildPlanSearchAPIMethod.php',
|
'HarbormasterBuildPlanSearchAPIMethod' => 'applications/harbormaster/conduit/HarbormasterBuildPlanSearchAPIMethod.php',
|
||||||
'HarbormasterBuildPlanSearchEngine' => 'applications/harbormaster/query/HarbormasterBuildPlanSearchEngine.php',
|
'HarbormasterBuildPlanSearchEngine' => 'applications/harbormaster/query/HarbormasterBuildPlanSearchEngine.php',
|
||||||
|
'HarbormasterBuildPlanStatusTransaction' => 'applications/harbormaster/xaction/plan/HarbormasterBuildPlanStatusTransaction.php',
|
||||||
'HarbormasterBuildPlanTransaction' => 'applications/harbormaster/storage/configuration/HarbormasterBuildPlanTransaction.php',
|
'HarbormasterBuildPlanTransaction' => 'applications/harbormaster/storage/configuration/HarbormasterBuildPlanTransaction.php',
|
||||||
'HarbormasterBuildPlanTransactionQuery' => 'applications/harbormaster/query/HarbormasterBuildPlanTransactionQuery.php',
|
'HarbormasterBuildPlanTransactionQuery' => 'applications/harbormaster/query/HarbormasterBuildPlanTransactionQuery.php',
|
||||||
|
'HarbormasterBuildPlanTransactionType' => 'applications/harbormaster/xaction/plan/HarbormasterBuildPlanTransactionType.php',
|
||||||
'HarbormasterBuildQuery' => 'applications/harbormaster/query/HarbormasterBuildQuery.php',
|
'HarbormasterBuildQuery' => 'applications/harbormaster/query/HarbormasterBuildQuery.php',
|
||||||
'HarbormasterBuildRequest' => 'applications/harbormaster/engine/HarbormasterBuildRequest.php',
|
'HarbormasterBuildRequest' => 'applications/harbormaster/engine/HarbormasterBuildRequest.php',
|
||||||
'HarbormasterBuildSearchConduitAPIMethod' => 'applications/harbormaster/conduit/HarbormasterBuildSearchConduitAPIMethod.php',
|
'HarbormasterBuildSearchConduitAPIMethod' => 'applications/harbormaster/conduit/HarbormasterBuildSearchConduitAPIMethod.php',
|
||||||
@@ -1365,6 +1374,8 @@ phutil_register_library_map(array(
|
|||||||
'HarbormasterBuildTransactionEditor' => 'applications/harbormaster/editor/HarbormasterBuildTransactionEditor.php',
|
'HarbormasterBuildTransactionEditor' => 'applications/harbormaster/editor/HarbormasterBuildTransactionEditor.php',
|
||||||
'HarbormasterBuildTransactionQuery' => 'applications/harbormaster/query/HarbormasterBuildTransactionQuery.php',
|
'HarbormasterBuildTransactionQuery' => 'applications/harbormaster/query/HarbormasterBuildTransactionQuery.php',
|
||||||
'HarbormasterBuildUnitMessage' => 'applications/harbormaster/storage/build/HarbormasterBuildUnitMessage.php',
|
'HarbormasterBuildUnitMessage' => 'applications/harbormaster/storage/build/HarbormasterBuildUnitMessage.php',
|
||||||
|
'HarbormasterBuildUnitMessageQuery' => 'applications/harbormaster/query/HarbormasterBuildUnitMessageQuery.php',
|
||||||
|
'HarbormasterBuildView' => 'applications/harbormaster/view/HarbormasterBuildView.php',
|
||||||
'HarbormasterBuildViewController' => 'applications/harbormaster/controller/HarbormasterBuildViewController.php',
|
'HarbormasterBuildViewController' => 'applications/harbormaster/controller/HarbormasterBuildViewController.php',
|
||||||
'HarbormasterBuildWorker' => 'applications/harbormaster/worker/HarbormasterBuildWorker.php',
|
'HarbormasterBuildWorker' => 'applications/harbormaster/worker/HarbormasterBuildWorker.php',
|
||||||
'HarbormasterBuildable' => 'applications/harbormaster/storage/HarbormasterBuildable.php',
|
'HarbormasterBuildable' => 'applications/harbormaster/storage/HarbormasterBuildable.php',
|
||||||
@@ -1418,6 +1429,7 @@ phutil_register_library_map(array(
|
|||||||
'HarbormasterMessageType' => 'applications/harbormaster/engine/HarbormasterMessageType.php',
|
'HarbormasterMessageType' => 'applications/harbormaster/engine/HarbormasterMessageType.php',
|
||||||
'HarbormasterObject' => 'applications/harbormaster/storage/HarbormasterObject.php',
|
'HarbormasterObject' => 'applications/harbormaster/storage/HarbormasterObject.php',
|
||||||
'HarbormasterOtherBuildStepGroup' => 'applications/harbormaster/stepgroup/HarbormasterOtherBuildStepGroup.php',
|
'HarbormasterOtherBuildStepGroup' => 'applications/harbormaster/stepgroup/HarbormasterOtherBuildStepGroup.php',
|
||||||
|
'HarbormasterPlanBehaviorController' => 'applications/harbormaster/controller/HarbormasterPlanBehaviorController.php',
|
||||||
'HarbormasterPlanController' => 'applications/harbormaster/controller/HarbormasterPlanController.php',
|
'HarbormasterPlanController' => 'applications/harbormaster/controller/HarbormasterPlanController.php',
|
||||||
'HarbormasterPlanDisableController' => 'applications/harbormaster/controller/HarbormasterPlanDisableController.php',
|
'HarbormasterPlanDisableController' => 'applications/harbormaster/controller/HarbormasterPlanDisableController.php',
|
||||||
'HarbormasterPlanEditController' => 'applications/harbormaster/controller/HarbormasterPlanEditController.php',
|
'HarbormasterPlanEditController' => 'applications/harbormaster/controller/HarbormasterPlanEditController.php',
|
||||||
@@ -1431,6 +1443,7 @@ phutil_register_library_map(array(
|
|||||||
'HarbormasterQueryBuildsConduitAPIMethod' => 'applications/harbormaster/conduit/HarbormasterQueryBuildsConduitAPIMethod.php',
|
'HarbormasterQueryBuildsConduitAPIMethod' => 'applications/harbormaster/conduit/HarbormasterQueryBuildsConduitAPIMethod.php',
|
||||||
'HarbormasterQueryBuildsSearchEngineAttachment' => 'applications/harbormaster/engineextension/HarbormasterQueryBuildsSearchEngineAttachment.php',
|
'HarbormasterQueryBuildsSearchEngineAttachment' => 'applications/harbormaster/engineextension/HarbormasterQueryBuildsSearchEngineAttachment.php',
|
||||||
'HarbormasterRemarkupRule' => 'applications/harbormaster/remarkup/HarbormasterRemarkupRule.php',
|
'HarbormasterRemarkupRule' => 'applications/harbormaster/remarkup/HarbormasterRemarkupRule.php',
|
||||||
|
'HarbormasterRestartException' => 'applications/harbormaster/exception/HarbormasterRestartException.php',
|
||||||
'HarbormasterRunBuildPlansHeraldAction' => 'applications/harbormaster/herald/HarbormasterRunBuildPlansHeraldAction.php',
|
'HarbormasterRunBuildPlansHeraldAction' => 'applications/harbormaster/herald/HarbormasterRunBuildPlansHeraldAction.php',
|
||||||
'HarbormasterSchemaSpec' => 'applications/harbormaster/storage/HarbormasterSchemaSpec.php',
|
'HarbormasterSchemaSpec' => 'applications/harbormaster/storage/HarbormasterSchemaSpec.php',
|
||||||
'HarbormasterScratchTable' => 'applications/harbormaster/storage/HarbormasterScratchTable.php',
|
'HarbormasterScratchTable' => 'applications/harbormaster/storage/HarbormasterScratchTable.php',
|
||||||
@@ -1440,6 +1453,7 @@ phutil_register_library_map(array(
|
|||||||
'HarbormasterStepDeleteController' => 'applications/harbormaster/controller/HarbormasterStepDeleteController.php',
|
'HarbormasterStepDeleteController' => 'applications/harbormaster/controller/HarbormasterStepDeleteController.php',
|
||||||
'HarbormasterStepEditController' => 'applications/harbormaster/controller/HarbormasterStepEditController.php',
|
'HarbormasterStepEditController' => 'applications/harbormaster/controller/HarbormasterStepEditController.php',
|
||||||
'HarbormasterStepViewController' => 'applications/harbormaster/controller/HarbormasterStepViewController.php',
|
'HarbormasterStepViewController' => 'applications/harbormaster/controller/HarbormasterStepViewController.php',
|
||||||
|
'HarbormasterString' => 'applications/harbormaster/storage/HarbormasterString.php',
|
||||||
'HarbormasterTargetEngine' => 'applications/harbormaster/engine/HarbormasterTargetEngine.php',
|
'HarbormasterTargetEngine' => 'applications/harbormaster/engine/HarbormasterTargetEngine.php',
|
||||||
'HarbormasterTargetSearchAPIMethod' => 'applications/harbormaster/conduit/HarbormasterTargetSearchAPIMethod.php',
|
'HarbormasterTargetSearchAPIMethod' => 'applications/harbormaster/conduit/HarbormasterTargetSearchAPIMethod.php',
|
||||||
'HarbormasterTargetWorker' => 'applications/harbormaster/worker/HarbormasterTargetWorker.php',
|
'HarbormasterTargetWorker' => 'applications/harbormaster/worker/HarbormasterTargetWorker.php',
|
||||||
@@ -1518,14 +1532,20 @@ phutil_register_library_map(array(
|
|||||||
'HeraldRemarkupFieldValue' => 'applications/herald/value/HeraldRemarkupFieldValue.php',
|
'HeraldRemarkupFieldValue' => 'applications/herald/value/HeraldRemarkupFieldValue.php',
|
||||||
'HeraldRemarkupRule' => 'applications/herald/remarkup/HeraldRemarkupRule.php',
|
'HeraldRemarkupRule' => 'applications/herald/remarkup/HeraldRemarkupRule.php',
|
||||||
'HeraldRule' => 'applications/herald/storage/HeraldRule.php',
|
'HeraldRule' => 'applications/herald/storage/HeraldRule.php',
|
||||||
|
'HeraldRuleActionAffectsObjectEdgeType' => 'applications/herald/edge/HeraldRuleActionAffectsObjectEdgeType.php',
|
||||||
'HeraldRuleAdapter' => 'applications/herald/adapter/HeraldRuleAdapter.php',
|
'HeraldRuleAdapter' => 'applications/herald/adapter/HeraldRuleAdapter.php',
|
||||||
'HeraldRuleAdapterField' => 'applications/herald/field/rule/HeraldRuleAdapterField.php',
|
'HeraldRuleAdapterField' => 'applications/herald/field/rule/HeraldRuleAdapterField.php',
|
||||||
'HeraldRuleController' => 'applications/herald/controller/HeraldRuleController.php',
|
'HeraldRuleController' => 'applications/herald/controller/HeraldRuleController.php',
|
||||||
'HeraldRuleDatasource' => 'applications/herald/typeahead/HeraldRuleDatasource.php',
|
'HeraldRuleDatasource' => 'applications/herald/typeahead/HeraldRuleDatasource.php',
|
||||||
|
'HeraldRuleDisableTransaction' => 'applications/herald/xaction/HeraldRuleDisableTransaction.php',
|
||||||
|
'HeraldRuleEditTransaction' => 'applications/herald/xaction/HeraldRuleEditTransaction.php',
|
||||||
'HeraldRuleEditor' => 'applications/herald/editor/HeraldRuleEditor.php',
|
'HeraldRuleEditor' => 'applications/herald/editor/HeraldRuleEditor.php',
|
||||||
'HeraldRuleField' => 'applications/herald/field/rule/HeraldRuleField.php',
|
'HeraldRuleField' => 'applications/herald/field/rule/HeraldRuleField.php',
|
||||||
'HeraldRuleFieldGroup' => 'applications/herald/field/rule/HeraldRuleFieldGroup.php',
|
'HeraldRuleFieldGroup' => 'applications/herald/field/rule/HeraldRuleFieldGroup.php',
|
||||||
|
'HeraldRuleIndexEngineExtension' => 'applications/herald/engineextension/HeraldRuleIndexEngineExtension.php',
|
||||||
'HeraldRuleListController' => 'applications/herald/controller/HeraldRuleListController.php',
|
'HeraldRuleListController' => 'applications/herald/controller/HeraldRuleListController.php',
|
||||||
|
'HeraldRuleListView' => 'applications/herald/view/HeraldRuleListView.php',
|
||||||
|
'HeraldRuleNameTransaction' => 'applications/herald/xaction/HeraldRuleNameTransaction.php',
|
||||||
'HeraldRulePHIDType' => 'applications/herald/phid/HeraldRulePHIDType.php',
|
'HeraldRulePHIDType' => 'applications/herald/phid/HeraldRulePHIDType.php',
|
||||||
'HeraldRuleQuery' => 'applications/herald/query/HeraldRuleQuery.php',
|
'HeraldRuleQuery' => 'applications/herald/query/HeraldRuleQuery.php',
|
||||||
'HeraldRuleReplyHandler' => 'applications/herald/mail/HeraldRuleReplyHandler.php',
|
'HeraldRuleReplyHandler' => 'applications/herald/mail/HeraldRuleReplyHandler.php',
|
||||||
@@ -1533,7 +1553,7 @@ phutil_register_library_map(array(
|
|||||||
'HeraldRuleSerializer' => 'applications/herald/editor/HeraldRuleSerializer.php',
|
'HeraldRuleSerializer' => 'applications/herald/editor/HeraldRuleSerializer.php',
|
||||||
'HeraldRuleTestCase' => 'applications/herald/storage/__tests__/HeraldRuleTestCase.php',
|
'HeraldRuleTestCase' => 'applications/herald/storage/__tests__/HeraldRuleTestCase.php',
|
||||||
'HeraldRuleTransaction' => 'applications/herald/storage/HeraldRuleTransaction.php',
|
'HeraldRuleTransaction' => 'applications/herald/storage/HeraldRuleTransaction.php',
|
||||||
'HeraldRuleTransactionComment' => 'applications/herald/storage/HeraldRuleTransactionComment.php',
|
'HeraldRuleTransactionType' => 'applications/herald/xaction/HeraldRuleTransactionType.php',
|
||||||
'HeraldRuleTranscript' => 'applications/herald/storage/transcript/HeraldRuleTranscript.php',
|
'HeraldRuleTranscript' => 'applications/herald/storage/transcript/HeraldRuleTranscript.php',
|
||||||
'HeraldRuleTypeConfig' => 'applications/herald/config/HeraldRuleTypeConfig.php',
|
'HeraldRuleTypeConfig' => 'applications/herald/config/HeraldRuleTypeConfig.php',
|
||||||
'HeraldRuleTypeDatasource' => 'applications/herald/typeahead/HeraldRuleTypeDatasource.php',
|
'HeraldRuleTypeDatasource' => 'applications/herald/typeahead/HeraldRuleTypeDatasource.php',
|
||||||
@@ -1690,7 +1710,6 @@ phutil_register_library_map(array(
|
|||||||
'ManiphestStatusEmailCommand' => 'applications/maniphest/command/ManiphestStatusEmailCommand.php',
|
'ManiphestStatusEmailCommand' => 'applications/maniphest/command/ManiphestStatusEmailCommand.php',
|
||||||
'ManiphestStatusSearchConduitAPIMethod' => 'applications/maniphest/conduit/ManiphestStatusSearchConduitAPIMethod.php',
|
'ManiphestStatusSearchConduitAPIMethod' => 'applications/maniphest/conduit/ManiphestStatusSearchConduitAPIMethod.php',
|
||||||
'ManiphestStatusesConfigType' => 'applications/maniphest/config/ManiphestStatusesConfigType.php',
|
'ManiphestStatusesConfigType' => 'applications/maniphest/config/ManiphestStatusesConfigType.php',
|
||||||
'ManiphestSubpriorityController' => 'applications/maniphest/controller/ManiphestSubpriorityController.php',
|
|
||||||
'ManiphestSubtypesConfigType' => 'applications/maniphest/config/ManiphestSubtypesConfigType.php',
|
'ManiphestSubtypesConfigType' => 'applications/maniphest/config/ManiphestSubtypesConfigType.php',
|
||||||
'ManiphestTask' => 'applications/maniphest/storage/ManiphestTask.php',
|
'ManiphestTask' => 'applications/maniphest/storage/ManiphestTask.php',
|
||||||
'ManiphestTaskAssignHeraldAction' => 'applications/maniphest/herald/ManiphestTaskAssignHeraldAction.php',
|
'ManiphestTaskAssignHeraldAction' => 'applications/maniphest/herald/ManiphestTaskAssignHeraldAction.php',
|
||||||
@@ -1715,6 +1734,7 @@ phutil_register_library_map(array(
|
|||||||
'ManiphestTaskFerretEngine' => 'applications/maniphest/search/ManiphestTaskFerretEngine.php',
|
'ManiphestTaskFerretEngine' => 'applications/maniphest/search/ManiphestTaskFerretEngine.php',
|
||||||
'ManiphestTaskFulltextEngine' => 'applications/maniphest/search/ManiphestTaskFulltextEngine.php',
|
'ManiphestTaskFulltextEngine' => 'applications/maniphest/search/ManiphestTaskFulltextEngine.php',
|
||||||
'ManiphestTaskGraph' => 'infrastructure/graph/ManiphestTaskGraph.php',
|
'ManiphestTaskGraph' => 'infrastructure/graph/ManiphestTaskGraph.php',
|
||||||
|
'ManiphestTaskGraphController' => 'applications/maniphest/controller/ManiphestTaskGraphController.php',
|
||||||
'ManiphestTaskHasCommitEdgeType' => 'applications/maniphest/edge/ManiphestTaskHasCommitEdgeType.php',
|
'ManiphestTaskHasCommitEdgeType' => 'applications/maniphest/edge/ManiphestTaskHasCommitEdgeType.php',
|
||||||
'ManiphestTaskHasCommitRelationship' => 'applications/maniphest/relationship/ManiphestTaskHasCommitRelationship.php',
|
'ManiphestTaskHasCommitRelationship' => 'applications/maniphest/relationship/ManiphestTaskHasCommitRelationship.php',
|
||||||
'ManiphestTaskHasDuplicateTaskEdgeType' => 'applications/maniphest/edge/ManiphestTaskHasDuplicateTaskEdgeType.php',
|
'ManiphestTaskHasDuplicateTaskEdgeType' => 'applications/maniphest/edge/ManiphestTaskHasDuplicateTaskEdgeType.php',
|
||||||
@@ -1742,6 +1762,7 @@ phutil_register_library_map(array(
|
|||||||
'ManiphestTaskParentTransaction' => 'applications/maniphest/xaction/ManiphestTaskParentTransaction.php',
|
'ManiphestTaskParentTransaction' => 'applications/maniphest/xaction/ManiphestTaskParentTransaction.php',
|
||||||
'ManiphestTaskPoints' => 'applications/maniphest/constants/ManiphestTaskPoints.php',
|
'ManiphestTaskPoints' => 'applications/maniphest/constants/ManiphestTaskPoints.php',
|
||||||
'ManiphestTaskPointsTransaction' => 'applications/maniphest/xaction/ManiphestTaskPointsTransaction.php',
|
'ManiphestTaskPointsTransaction' => 'applications/maniphest/xaction/ManiphestTaskPointsTransaction.php',
|
||||||
|
'ManiphestTaskPolicyCodex' => 'applications/maniphest/policy/ManiphestTaskPolicyCodex.php',
|
||||||
'ManiphestTaskPriority' => 'applications/maniphest/constants/ManiphestTaskPriority.php',
|
'ManiphestTaskPriority' => 'applications/maniphest/constants/ManiphestTaskPriority.php',
|
||||||
'ManiphestTaskPriorityDatasource' => 'applications/maniphest/typeahead/ManiphestTaskPriorityDatasource.php',
|
'ManiphestTaskPriorityDatasource' => 'applications/maniphest/typeahead/ManiphestTaskPriorityDatasource.php',
|
||||||
'ManiphestTaskPriorityHeraldAction' => 'applications/maniphest/herald/ManiphestTaskPriorityHeraldAction.php',
|
'ManiphestTaskPriorityHeraldAction' => 'applications/maniphest/herald/ManiphestTaskPriorityHeraldAction.php',
|
||||||
@@ -1762,11 +1783,11 @@ phutil_register_library_map(array(
|
|||||||
'ManiphestTaskSubpriorityTransaction' => 'applications/maniphest/xaction/ManiphestTaskSubpriorityTransaction.php',
|
'ManiphestTaskSubpriorityTransaction' => 'applications/maniphest/xaction/ManiphestTaskSubpriorityTransaction.php',
|
||||||
'ManiphestTaskSubtaskController' => 'applications/maniphest/controller/ManiphestTaskSubtaskController.php',
|
'ManiphestTaskSubtaskController' => 'applications/maniphest/controller/ManiphestTaskSubtaskController.php',
|
||||||
'ManiphestTaskSubtypeDatasource' => 'applications/maniphest/typeahead/ManiphestTaskSubtypeDatasource.php',
|
'ManiphestTaskSubtypeDatasource' => 'applications/maniphest/typeahead/ManiphestTaskSubtypeDatasource.php',
|
||||||
'ManiphestTaskTestCase' => 'applications/maniphest/__tests__/ManiphestTaskTestCase.php',
|
|
||||||
'ManiphestTaskTitleHeraldField' => 'applications/maniphest/herald/ManiphestTaskTitleHeraldField.php',
|
'ManiphestTaskTitleHeraldField' => 'applications/maniphest/herald/ManiphestTaskTitleHeraldField.php',
|
||||||
'ManiphestTaskTitleTransaction' => 'applications/maniphest/xaction/ManiphestTaskTitleTransaction.php',
|
'ManiphestTaskTitleTransaction' => 'applications/maniphest/xaction/ManiphestTaskTitleTransaction.php',
|
||||||
'ManiphestTaskTransactionType' => 'applications/maniphest/xaction/ManiphestTaskTransactionType.php',
|
'ManiphestTaskTransactionType' => 'applications/maniphest/xaction/ManiphestTaskTransactionType.php',
|
||||||
'ManiphestTaskUnblockTransaction' => 'applications/maniphest/xaction/ManiphestTaskUnblockTransaction.php',
|
'ManiphestTaskUnblockTransaction' => 'applications/maniphest/xaction/ManiphestTaskUnblockTransaction.php',
|
||||||
|
'ManiphestTaskUnlockEngine' => 'applications/maniphest/engine/ManiphestTaskUnlockEngine.php',
|
||||||
'ManiphestTransaction' => 'applications/maniphest/storage/ManiphestTransaction.php',
|
'ManiphestTransaction' => 'applications/maniphest/storage/ManiphestTransaction.php',
|
||||||
'ManiphestTransactionComment' => 'applications/maniphest/storage/ManiphestTransactionComment.php',
|
'ManiphestTransactionComment' => 'applications/maniphest/storage/ManiphestTransactionComment.php',
|
||||||
'ManiphestTransactionEditor' => 'applications/maniphest/editor/ManiphestTransactionEditor.php',
|
'ManiphestTransactionEditor' => 'applications/maniphest/editor/ManiphestTransactionEditor.php',
|
||||||
@@ -2198,6 +2219,8 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorAuthChallengeGarbageCollector' => 'applications/auth/garbagecollector/PhabricatorAuthChallengeGarbageCollector.php',
|
'PhabricatorAuthChallengeGarbageCollector' => 'applications/auth/garbagecollector/PhabricatorAuthChallengeGarbageCollector.php',
|
||||||
'PhabricatorAuthChallengePHIDType' => 'applications/auth/phid/PhabricatorAuthChallengePHIDType.php',
|
'PhabricatorAuthChallengePHIDType' => 'applications/auth/phid/PhabricatorAuthChallengePHIDType.php',
|
||||||
'PhabricatorAuthChallengeQuery' => 'applications/auth/query/PhabricatorAuthChallengeQuery.php',
|
'PhabricatorAuthChallengeQuery' => 'applications/auth/query/PhabricatorAuthChallengeQuery.php',
|
||||||
|
'PhabricatorAuthChallengeStatusController' => 'applications/auth/controller/mfa/PhabricatorAuthChallengeStatusController.php',
|
||||||
|
'PhabricatorAuthChallengeUpdate' => 'applications/auth/view/PhabricatorAuthChallengeUpdate.php',
|
||||||
'PhabricatorAuthChangePasswordAction' => 'applications/auth/action/PhabricatorAuthChangePasswordAction.php',
|
'PhabricatorAuthChangePasswordAction' => 'applications/auth/action/PhabricatorAuthChangePasswordAction.php',
|
||||||
'PhabricatorAuthConduitAPIMethod' => 'applications/auth/conduit/PhabricatorAuthConduitAPIMethod.php',
|
'PhabricatorAuthConduitAPIMethod' => 'applications/auth/conduit/PhabricatorAuthConduitAPIMethod.php',
|
||||||
'PhabricatorAuthConduitTokenRevoker' => 'applications/auth/revoker/PhabricatorAuthConduitTokenRevoker.php',
|
'PhabricatorAuthConduitTokenRevoker' => 'applications/auth/revoker/PhabricatorAuthConduitTokenRevoker.php',
|
||||||
@@ -2273,9 +2296,9 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorAuthInviteVerifyException' => 'applications/auth/exception/PhabricatorAuthInviteVerifyException.php',
|
'PhabricatorAuthInviteVerifyException' => 'applications/auth/exception/PhabricatorAuthInviteVerifyException.php',
|
||||||
'PhabricatorAuthInviteWorker' => 'applications/auth/worker/PhabricatorAuthInviteWorker.php',
|
'PhabricatorAuthInviteWorker' => 'applications/auth/worker/PhabricatorAuthInviteWorker.php',
|
||||||
'PhabricatorAuthLinkController' => 'applications/auth/controller/PhabricatorAuthLinkController.php',
|
'PhabricatorAuthLinkController' => 'applications/auth/controller/PhabricatorAuthLinkController.php',
|
||||||
|
'PhabricatorAuthLinkMessageType' => 'applications/auth/message/PhabricatorAuthLinkMessageType.php',
|
||||||
'PhabricatorAuthListController' => 'applications/auth/controller/config/PhabricatorAuthListController.php',
|
'PhabricatorAuthListController' => 'applications/auth/controller/config/PhabricatorAuthListController.php',
|
||||||
'PhabricatorAuthLoginController' => 'applications/auth/controller/PhabricatorAuthLoginController.php',
|
'PhabricatorAuthLoginController' => 'applications/auth/controller/PhabricatorAuthLoginController.php',
|
||||||
'PhabricatorAuthLoginHandler' => 'applications/auth/handler/PhabricatorAuthLoginHandler.php',
|
|
||||||
'PhabricatorAuthLoginMessageType' => 'applications/auth/message/PhabricatorAuthLoginMessageType.php',
|
'PhabricatorAuthLoginMessageType' => 'applications/auth/message/PhabricatorAuthLoginMessageType.php',
|
||||||
'PhabricatorAuthLogoutConduitAPIMethod' => 'applications/auth/conduit/PhabricatorAuthLogoutConduitAPIMethod.php',
|
'PhabricatorAuthLogoutConduitAPIMethod' => 'applications/auth/conduit/PhabricatorAuthLogoutConduitAPIMethod.php',
|
||||||
'PhabricatorAuthMFAEditEngineExtension' => 'applications/auth/engineextension/PhabricatorAuthMFAEditEngineExtension.php',
|
'PhabricatorAuthMFAEditEngineExtension' => 'applications/auth/engineextension/PhabricatorAuthMFAEditEngineExtension.php',
|
||||||
@@ -2338,6 +2361,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorAuthProviderConfigTransaction' => 'applications/auth/storage/PhabricatorAuthProviderConfigTransaction.php',
|
'PhabricatorAuthProviderConfigTransaction' => 'applications/auth/storage/PhabricatorAuthProviderConfigTransaction.php',
|
||||||
'PhabricatorAuthProviderConfigTransactionQuery' => 'applications/auth/query/PhabricatorAuthProviderConfigTransactionQuery.php',
|
'PhabricatorAuthProviderConfigTransactionQuery' => 'applications/auth/query/PhabricatorAuthProviderConfigTransactionQuery.php',
|
||||||
'PhabricatorAuthProviderController' => 'applications/auth/controller/config/PhabricatorAuthProviderController.php',
|
'PhabricatorAuthProviderController' => 'applications/auth/controller/config/PhabricatorAuthProviderController.php',
|
||||||
|
'PhabricatorAuthProviderViewController' => 'applications/auth/controller/config/PhabricatorAuthProviderViewController.php',
|
||||||
'PhabricatorAuthProvidersGuidanceContext' => 'applications/auth/guidance/PhabricatorAuthProvidersGuidanceContext.php',
|
'PhabricatorAuthProvidersGuidanceContext' => 'applications/auth/guidance/PhabricatorAuthProvidersGuidanceContext.php',
|
||||||
'PhabricatorAuthProvidersGuidanceEngineExtension' => 'applications/auth/guidance/PhabricatorAuthProvidersGuidanceEngineExtension.php',
|
'PhabricatorAuthProvidersGuidanceEngineExtension' => 'applications/auth/guidance/PhabricatorAuthProvidersGuidanceEngineExtension.php',
|
||||||
'PhabricatorAuthQueryPublicKeysConduitAPIMethod' => 'applications/auth/conduit/PhabricatorAuthQueryPublicKeysConduitAPIMethod.php',
|
'PhabricatorAuthQueryPublicKeysConduitAPIMethod' => 'applications/auth/conduit/PhabricatorAuthQueryPublicKeysConduitAPIMethod.php',
|
||||||
@@ -2371,6 +2395,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorAuthSessionPHIDType' => 'applications/auth/phid/PhabricatorAuthSessionPHIDType.php',
|
'PhabricatorAuthSessionPHIDType' => 'applications/auth/phid/PhabricatorAuthSessionPHIDType.php',
|
||||||
'PhabricatorAuthSessionQuery' => 'applications/auth/query/PhabricatorAuthSessionQuery.php',
|
'PhabricatorAuthSessionQuery' => 'applications/auth/query/PhabricatorAuthSessionQuery.php',
|
||||||
'PhabricatorAuthSessionRevoker' => 'applications/auth/revoker/PhabricatorAuthSessionRevoker.php',
|
'PhabricatorAuthSessionRevoker' => 'applications/auth/revoker/PhabricatorAuthSessionRevoker.php',
|
||||||
|
'PhabricatorAuthSetExternalController' => 'applications/auth/controller/PhabricatorAuthSetExternalController.php',
|
||||||
'PhabricatorAuthSetPasswordController' => 'applications/auth/controller/PhabricatorAuthSetPasswordController.php',
|
'PhabricatorAuthSetPasswordController' => 'applications/auth/controller/PhabricatorAuthSetPasswordController.php',
|
||||||
'PhabricatorAuthSetupCheck' => 'applications/config/check/PhabricatorAuthSetupCheck.php',
|
'PhabricatorAuthSetupCheck' => 'applications/config/check/PhabricatorAuthSetupCheck.php',
|
||||||
'PhabricatorAuthStartController' => 'applications/auth/controller/PhabricatorAuthStartController.php',
|
'PhabricatorAuthStartController' => 'applications/auth/controller/PhabricatorAuthStartController.php',
|
||||||
@@ -2856,8 +2881,6 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorDaemonLog' => 'applications/daemon/storage/PhabricatorDaemonLog.php',
|
'PhabricatorDaemonLog' => 'applications/daemon/storage/PhabricatorDaemonLog.php',
|
||||||
'PhabricatorDaemonLogEvent' => 'applications/daemon/storage/PhabricatorDaemonLogEvent.php',
|
'PhabricatorDaemonLogEvent' => 'applications/daemon/storage/PhabricatorDaemonLogEvent.php',
|
||||||
'PhabricatorDaemonLogEventGarbageCollector' => 'applications/daemon/garbagecollector/PhabricatorDaemonLogEventGarbageCollector.php',
|
'PhabricatorDaemonLogEventGarbageCollector' => 'applications/daemon/garbagecollector/PhabricatorDaemonLogEventGarbageCollector.php',
|
||||||
'PhabricatorDaemonLogEventViewController' => 'applications/daemon/controller/PhabricatorDaemonLogEventViewController.php',
|
|
||||||
'PhabricatorDaemonLogEventsView' => 'applications/daemon/view/PhabricatorDaemonLogEventsView.php',
|
|
||||||
'PhabricatorDaemonLogGarbageCollector' => 'applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php',
|
'PhabricatorDaemonLogGarbageCollector' => 'applications/daemon/garbagecollector/PhabricatorDaemonLogGarbageCollector.php',
|
||||||
'PhabricatorDaemonLogListController' => 'applications/daemon/controller/PhabricatorDaemonLogListController.php',
|
'PhabricatorDaemonLogListController' => 'applications/daemon/controller/PhabricatorDaemonLogListController.php',
|
||||||
'PhabricatorDaemonLogListView' => 'applications/daemon/view/PhabricatorDaemonLogListView.php',
|
'PhabricatorDaemonLogListView' => 'applications/daemon/view/PhabricatorDaemonLogListView.php',
|
||||||
@@ -2888,6 +2911,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorDashboardApplication' => 'applications/dashboard/application/PhabricatorDashboardApplication.php',
|
'PhabricatorDashboardApplication' => 'applications/dashboard/application/PhabricatorDashboardApplication.php',
|
||||||
'PhabricatorDashboardArchiveController' => 'applications/dashboard/controller/PhabricatorDashboardArchiveController.php',
|
'PhabricatorDashboardArchiveController' => 'applications/dashboard/controller/PhabricatorDashboardArchiveController.php',
|
||||||
'PhabricatorDashboardArrangeController' => 'applications/dashboard/controller/PhabricatorDashboardArrangeController.php',
|
'PhabricatorDashboardArrangeController' => 'applications/dashboard/controller/PhabricatorDashboardArrangeController.php',
|
||||||
|
'PhabricatorDashboardConsoleController' => 'applications/dashboard/controller/PhabricatorDashboardConsoleController.php',
|
||||||
'PhabricatorDashboardController' => 'applications/dashboard/controller/PhabricatorDashboardController.php',
|
'PhabricatorDashboardController' => 'applications/dashboard/controller/PhabricatorDashboardController.php',
|
||||||
'PhabricatorDashboardDAO' => 'applications/dashboard/storage/PhabricatorDashboardDAO.php',
|
'PhabricatorDashboardDAO' => 'applications/dashboard/storage/PhabricatorDashboardDAO.php',
|
||||||
'PhabricatorDashboardDashboardHasPanelEdgeType' => 'applications/dashboard/edge/PhabricatorDashboardDashboardHasPanelEdgeType.php',
|
'PhabricatorDashboardDashboardHasPanelEdgeType' => 'applications/dashboard/edge/PhabricatorDashboardDashboardHasPanelEdgeType.php',
|
||||||
@@ -2927,6 +2951,25 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorDashboardPanelTransactionQuery' => 'applications/dashboard/query/PhabricatorDashboardPanelTransactionQuery.php',
|
'PhabricatorDashboardPanelTransactionQuery' => 'applications/dashboard/query/PhabricatorDashboardPanelTransactionQuery.php',
|
||||||
'PhabricatorDashboardPanelType' => 'applications/dashboard/paneltype/PhabricatorDashboardPanelType.php',
|
'PhabricatorDashboardPanelType' => 'applications/dashboard/paneltype/PhabricatorDashboardPanelType.php',
|
||||||
'PhabricatorDashboardPanelViewController' => 'applications/dashboard/controller/PhabricatorDashboardPanelViewController.php',
|
'PhabricatorDashboardPanelViewController' => 'applications/dashboard/controller/PhabricatorDashboardPanelViewController.php',
|
||||||
|
'PhabricatorDashboardPortal' => 'applications/dashboard/storage/PhabricatorDashboardPortal.php',
|
||||||
|
'PhabricatorDashboardPortalController' => 'applications/dashboard/controller/portal/PhabricatorDashboardPortalController.php',
|
||||||
|
'PhabricatorDashboardPortalEditConduitAPIMethod' => 'applications/dashboard/conduit/PhabricatorDashboardPortalEditConduitAPIMethod.php',
|
||||||
|
'PhabricatorDashboardPortalEditController' => 'applications/dashboard/controller/portal/PhabricatorDashboardPortalEditController.php',
|
||||||
|
'PhabricatorDashboardPortalEditEngine' => 'applications/dashboard/editor/PhabricatorDashboardPortalEditEngine.php',
|
||||||
|
'PhabricatorDashboardPortalEditor' => 'applications/dashboard/editor/PhabricatorDashboardPortalEditor.php',
|
||||||
|
'PhabricatorDashboardPortalListController' => 'applications/dashboard/controller/portal/PhabricatorDashboardPortalListController.php',
|
||||||
|
'PhabricatorDashboardPortalMenuItem' => 'applications/dashboard/menuitem/PhabricatorDashboardPortalMenuItem.php',
|
||||||
|
'PhabricatorDashboardPortalNameTransaction' => 'applications/dashboard/xaction/portal/PhabricatorDashboardPortalNameTransaction.php',
|
||||||
|
'PhabricatorDashboardPortalPHIDType' => 'applications/dashboard/phid/PhabricatorDashboardPortalPHIDType.php',
|
||||||
|
'PhabricatorDashboardPortalProfileMenuEngine' => 'applications/dashboard/engine/PhabricatorDashboardPortalProfileMenuEngine.php',
|
||||||
|
'PhabricatorDashboardPortalQuery' => 'applications/dashboard/query/PhabricatorDashboardPortalQuery.php',
|
||||||
|
'PhabricatorDashboardPortalSearchConduitAPIMethod' => 'applications/dashboard/conduit/PhabricatorDashboardPortalSearchConduitAPIMethod.php',
|
||||||
|
'PhabricatorDashboardPortalSearchEngine' => 'applications/dashboard/query/PhabricatorDashboardPortalSearchEngine.php',
|
||||||
|
'PhabricatorDashboardPortalStatus' => 'applications/dashboard/constants/PhabricatorDashboardPortalStatus.php',
|
||||||
|
'PhabricatorDashboardPortalTransaction' => 'applications/dashboard/storage/PhabricatorDashboardPortalTransaction.php',
|
||||||
|
'PhabricatorDashboardPortalTransactionQuery' => 'applications/dashboard/query/PhabricatorDashboardPortalTransactionQuery.php',
|
||||||
|
'PhabricatorDashboardPortalTransactionType' => 'applications/dashboard/xaction/portal/PhabricatorDashboardPortalTransactionType.php',
|
||||||
|
'PhabricatorDashboardPortalViewController' => 'applications/dashboard/controller/portal/PhabricatorDashboardPortalViewController.php',
|
||||||
'PhabricatorDashboardProfileController' => 'applications/dashboard/controller/PhabricatorDashboardProfileController.php',
|
'PhabricatorDashboardProfileController' => 'applications/dashboard/controller/PhabricatorDashboardProfileController.php',
|
||||||
'PhabricatorDashboardProfileMenuItem' => 'applications/search/menuitem/PhabricatorDashboardProfileMenuItem.php',
|
'PhabricatorDashboardProfileMenuItem' => 'applications/search/menuitem/PhabricatorDashboardProfileMenuItem.php',
|
||||||
'PhabricatorDashboardQuery' => 'applications/dashboard/query/PhabricatorDashboardQuery.php',
|
'PhabricatorDashboardQuery' => 'applications/dashboard/query/PhabricatorDashboardQuery.php',
|
||||||
@@ -2958,6 +3001,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorDebugController' => 'applications/system/controller/PhabricatorDebugController.php',
|
'PhabricatorDebugController' => 'applications/system/controller/PhabricatorDebugController.php',
|
||||||
'PhabricatorDefaultRequestExceptionHandler' => 'aphront/handler/PhabricatorDefaultRequestExceptionHandler.php',
|
'PhabricatorDefaultRequestExceptionHandler' => 'aphront/handler/PhabricatorDefaultRequestExceptionHandler.php',
|
||||||
'PhabricatorDefaultSyntaxStyle' => 'infrastructure/syntax/PhabricatorDefaultSyntaxStyle.php',
|
'PhabricatorDefaultSyntaxStyle' => 'infrastructure/syntax/PhabricatorDefaultSyntaxStyle.php',
|
||||||
|
'PhabricatorDefaultUnlockEngine' => 'applications/system/engine/PhabricatorDefaultUnlockEngine.php',
|
||||||
'PhabricatorDestructibleCodex' => 'applications/system/codex/PhabricatorDestructibleCodex.php',
|
'PhabricatorDestructibleCodex' => 'applications/system/codex/PhabricatorDestructibleCodex.php',
|
||||||
'PhabricatorDestructibleCodexInterface' => 'applications/system/interface/PhabricatorDestructibleCodexInterface.php',
|
'PhabricatorDestructibleCodexInterface' => 'applications/system/interface/PhabricatorDestructibleCodexInterface.php',
|
||||||
'PhabricatorDestructibleInterface' => 'applications/system/interface/PhabricatorDestructibleInterface.php',
|
'PhabricatorDestructibleInterface' => 'applications/system/interface/PhabricatorDestructibleInterface.php',
|
||||||
@@ -2968,6 +3012,8 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorDeveloperPreferencesSettingsPanel' => 'applications/settings/panel/PhabricatorDeveloperPreferencesSettingsPanel.php',
|
'PhabricatorDeveloperPreferencesSettingsPanel' => 'applications/settings/panel/PhabricatorDeveloperPreferencesSettingsPanel.php',
|
||||||
'PhabricatorDiffInlineCommentQuery' => 'infrastructure/diff/query/PhabricatorDiffInlineCommentQuery.php',
|
'PhabricatorDiffInlineCommentQuery' => 'infrastructure/diff/query/PhabricatorDiffInlineCommentQuery.php',
|
||||||
'PhabricatorDiffPreferencesSettingsPanel' => 'applications/settings/panel/PhabricatorDiffPreferencesSettingsPanel.php',
|
'PhabricatorDiffPreferencesSettingsPanel' => 'applications/settings/panel/PhabricatorDiffPreferencesSettingsPanel.php',
|
||||||
|
'PhabricatorDiffScopeEngine' => 'infrastructure/diff/PhabricatorDiffScopeEngine.php',
|
||||||
|
'PhabricatorDiffScopeEngineTestCase' => 'infrastructure/diff/__tests__/PhabricatorDiffScopeEngineTestCase.php',
|
||||||
'PhabricatorDifferenceEngine' => 'infrastructure/diff/PhabricatorDifferenceEngine.php',
|
'PhabricatorDifferenceEngine' => 'infrastructure/diff/PhabricatorDifferenceEngine.php',
|
||||||
'PhabricatorDifferentialApplication' => 'applications/differential/application/PhabricatorDifferentialApplication.php',
|
'PhabricatorDifferentialApplication' => 'applications/differential/application/PhabricatorDifferentialApplication.php',
|
||||||
'PhabricatorDifferentialAttachCommitWorkflow' => 'applications/differential/management/PhabricatorDifferentialAttachCommitWorkflow.php',
|
'PhabricatorDifferentialAttachCommitWorkflow' => 'applications/differential/management/PhabricatorDifferentialAttachCommitWorkflow.php',
|
||||||
@@ -3093,7 +3139,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorEmojiDatasource' => 'applications/macro/typeahead/PhabricatorEmojiDatasource.php',
|
'PhabricatorEmojiDatasource' => 'applications/macro/typeahead/PhabricatorEmojiDatasource.php',
|
||||||
'PhabricatorEmojiRemarkupRule' => 'applications/macro/markup/PhabricatorEmojiRemarkupRule.php',
|
'PhabricatorEmojiRemarkupRule' => 'applications/macro/markup/PhabricatorEmojiRemarkupRule.php',
|
||||||
'PhabricatorEmojiTranslation' => 'infrastructure/internationalization/translation/PhabricatorEmojiTranslation.php',
|
'PhabricatorEmojiTranslation' => 'infrastructure/internationalization/translation/PhabricatorEmojiTranslation.php',
|
||||||
'PhabricatorEmptyQueryException' => 'infrastructure/query/PhabricatorEmptyQueryException.php',
|
'PhabricatorEmptyQueryException' => 'infrastructure/query/exception/PhabricatorEmptyQueryException.php',
|
||||||
'PhabricatorEnumConfigType' => 'applications/config/type/PhabricatorEnumConfigType.php',
|
'PhabricatorEnumConfigType' => 'applications/config/type/PhabricatorEnumConfigType.php',
|
||||||
'PhabricatorEnv' => 'infrastructure/env/PhabricatorEnv.php',
|
'PhabricatorEnv' => 'infrastructure/env/PhabricatorEnv.php',
|
||||||
'PhabricatorEnvTestCase' => 'infrastructure/env/__tests__/PhabricatorEnvTestCase.php',
|
'PhabricatorEnvTestCase' => 'infrastructure/env/__tests__/PhabricatorEnvTestCase.php',
|
||||||
@@ -3370,6 +3416,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorInternationalizationManagementExtractWorkflow' => 'infrastructure/internationalization/management/PhabricatorInternationalizationManagementExtractWorkflow.php',
|
'PhabricatorInternationalizationManagementExtractWorkflow' => 'infrastructure/internationalization/management/PhabricatorInternationalizationManagementExtractWorkflow.php',
|
||||||
'PhabricatorInternationalizationManagementWorkflow' => 'infrastructure/internationalization/management/PhabricatorInternationalizationManagementWorkflow.php',
|
'PhabricatorInternationalizationManagementWorkflow' => 'infrastructure/internationalization/management/PhabricatorInternationalizationManagementWorkflow.php',
|
||||||
'PhabricatorInvalidConfigSetupCheck' => 'applications/config/check/PhabricatorInvalidConfigSetupCheck.php',
|
'PhabricatorInvalidConfigSetupCheck' => 'applications/config/check/PhabricatorInvalidConfigSetupCheck.php',
|
||||||
|
'PhabricatorInvalidQueryCursorException' => 'infrastructure/query/exception/PhabricatorInvalidQueryCursorException.php',
|
||||||
'PhabricatorIteratedMD5PasswordHasher' => 'infrastructure/util/password/PhabricatorIteratedMD5PasswordHasher.php',
|
'PhabricatorIteratedMD5PasswordHasher' => 'infrastructure/util/password/PhabricatorIteratedMD5PasswordHasher.php',
|
||||||
'PhabricatorIteratedMD5PasswordHasherTestCase' => 'infrastructure/util/password/__tests__/PhabricatorIteratedMD5PasswordHasherTestCase.php',
|
'PhabricatorIteratedMD5PasswordHasherTestCase' => 'infrastructure/util/password/__tests__/PhabricatorIteratedMD5PasswordHasherTestCase.php',
|
||||||
'PhabricatorIteratorFileUploadSource' => 'applications/files/uploadsource/PhabricatorIteratorFileUploadSource.php',
|
'PhabricatorIteratorFileUploadSource' => 'applications/files/uploadsource/PhabricatorIteratorFileUploadSource.php',
|
||||||
@@ -3442,6 +3489,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorMacroTransactionType' => 'applications/macro/xaction/PhabricatorMacroTransactionType.php',
|
'PhabricatorMacroTransactionType' => 'applications/macro/xaction/PhabricatorMacroTransactionType.php',
|
||||||
'PhabricatorMacroViewController' => 'applications/macro/controller/PhabricatorMacroViewController.php',
|
'PhabricatorMacroViewController' => 'applications/macro/controller/PhabricatorMacroViewController.php',
|
||||||
'PhabricatorMailAdapter' => 'applications/metamta/adapter/PhabricatorMailAdapter.php',
|
'PhabricatorMailAdapter' => 'applications/metamta/adapter/PhabricatorMailAdapter.php',
|
||||||
|
'PhabricatorMailAdapterTestCase' => 'applications/metamta/adapter/__tests__/PhabricatorMailAdapterTestCase.php',
|
||||||
'PhabricatorMailAmazonSESAdapter' => 'applications/metamta/adapter/PhabricatorMailAmazonSESAdapter.php',
|
'PhabricatorMailAmazonSESAdapter' => 'applications/metamta/adapter/PhabricatorMailAmazonSESAdapter.php',
|
||||||
'PhabricatorMailAmazonSNSAdapter' => 'applications/metamta/adapter/PhabricatorMailAmazonSNSAdapter.php',
|
'PhabricatorMailAmazonSNSAdapter' => 'applications/metamta/adapter/PhabricatorMailAmazonSNSAdapter.php',
|
||||||
'PhabricatorMailAttachment' => 'applications/metamta/message/PhabricatorMailAttachment.php',
|
'PhabricatorMailAttachment' => 'applications/metamta/message/PhabricatorMailAttachment.php',
|
||||||
@@ -3556,6 +3604,8 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorMetaMTASchemaSpec' => 'applications/metamta/storage/PhabricatorMetaMTASchemaSpec.php',
|
'PhabricatorMetaMTASchemaSpec' => 'applications/metamta/storage/PhabricatorMetaMTASchemaSpec.php',
|
||||||
'PhabricatorMetaMTASendGridReceiveController' => 'applications/metamta/controller/PhabricatorMetaMTASendGridReceiveController.php',
|
'PhabricatorMetaMTASendGridReceiveController' => 'applications/metamta/controller/PhabricatorMetaMTASendGridReceiveController.php',
|
||||||
'PhabricatorMetaMTAWorker' => 'applications/metamta/PhabricatorMetaMTAWorker.php',
|
'PhabricatorMetaMTAWorker' => 'applications/metamta/PhabricatorMetaMTAWorker.php',
|
||||||
|
'PhabricatorMetronome' => 'infrastructure/util/PhabricatorMetronome.php',
|
||||||
|
'PhabricatorMetronomeTestCase' => 'infrastructure/util/__tests__/PhabricatorMetronomeTestCase.php',
|
||||||
'PhabricatorMetronomicTriggerClock' => 'infrastructure/daemon/workers/clock/PhabricatorMetronomicTriggerClock.php',
|
'PhabricatorMetronomicTriggerClock' => 'infrastructure/daemon/workers/clock/PhabricatorMetronomicTriggerClock.php',
|
||||||
'PhabricatorModularTransaction' => 'applications/transactions/storage/PhabricatorModularTransaction.php',
|
'PhabricatorModularTransaction' => 'applications/transactions/storage/PhabricatorModularTransaction.php',
|
||||||
'PhabricatorModularTransactionType' => 'applications/transactions/storage/PhabricatorModularTransactionType.php',
|
'PhabricatorModularTransactionType' => 'applications/transactions/storage/PhabricatorModularTransactionType.php',
|
||||||
@@ -3666,10 +3716,12 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorOlderInlinesSetting' => 'applications/settings/setting/PhabricatorOlderInlinesSetting.php',
|
'PhabricatorOlderInlinesSetting' => 'applications/settings/setting/PhabricatorOlderInlinesSetting.php',
|
||||||
'PhabricatorOneTimeTriggerClock' => 'infrastructure/daemon/workers/clock/PhabricatorOneTimeTriggerClock.php',
|
'PhabricatorOneTimeTriggerClock' => 'infrastructure/daemon/workers/clock/PhabricatorOneTimeTriggerClock.php',
|
||||||
'PhabricatorOpcodeCacheSpec' => 'applications/cache/spec/PhabricatorOpcodeCacheSpec.php',
|
'PhabricatorOpcodeCacheSpec' => 'applications/cache/spec/PhabricatorOpcodeCacheSpec.php',
|
||||||
|
'PhabricatorOptionExportField' => 'infrastructure/export/field/PhabricatorOptionExportField.php',
|
||||||
'PhabricatorOptionGroupSetting' => 'applications/settings/setting/PhabricatorOptionGroupSetting.php',
|
'PhabricatorOptionGroupSetting' => 'applications/settings/setting/PhabricatorOptionGroupSetting.php',
|
||||||
'PhabricatorOwnerPathQuery' => 'applications/owners/query/PhabricatorOwnerPathQuery.php',
|
'PhabricatorOwnerPathQuery' => 'applications/owners/query/PhabricatorOwnerPathQuery.php',
|
||||||
'PhabricatorOwnersApplication' => 'applications/owners/application/PhabricatorOwnersApplication.php',
|
'PhabricatorOwnersApplication' => 'applications/owners/application/PhabricatorOwnersApplication.php',
|
||||||
'PhabricatorOwnersArchiveController' => 'applications/owners/controller/PhabricatorOwnersArchiveController.php',
|
'PhabricatorOwnersArchiveController' => 'applications/owners/controller/PhabricatorOwnersArchiveController.php',
|
||||||
|
'PhabricatorOwnersAuditRule' => 'applications/owners/constants/PhabricatorOwnersAuditRule.php',
|
||||||
'PhabricatorOwnersConfigOptions' => 'applications/owners/config/PhabricatorOwnersConfigOptions.php',
|
'PhabricatorOwnersConfigOptions' => 'applications/owners/config/PhabricatorOwnersConfigOptions.php',
|
||||||
'PhabricatorOwnersConfiguredCustomField' => 'applications/owners/customfield/PhabricatorOwnersConfiguredCustomField.php',
|
'PhabricatorOwnersConfiguredCustomField' => 'applications/owners/customfield/PhabricatorOwnersConfiguredCustomField.php',
|
||||||
'PhabricatorOwnersController' => 'applications/owners/controller/PhabricatorOwnersController.php',
|
'PhabricatorOwnersController' => 'applications/owners/controller/PhabricatorOwnersController.php',
|
||||||
@@ -3868,7 +3920,6 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorPeopleInviteController' => 'applications/people/controller/PhabricatorPeopleInviteController.php',
|
'PhabricatorPeopleInviteController' => 'applications/people/controller/PhabricatorPeopleInviteController.php',
|
||||||
'PhabricatorPeopleInviteListController' => 'applications/people/controller/PhabricatorPeopleInviteListController.php',
|
'PhabricatorPeopleInviteListController' => 'applications/people/controller/PhabricatorPeopleInviteListController.php',
|
||||||
'PhabricatorPeopleInviteSendController' => 'applications/people/controller/PhabricatorPeopleInviteSendController.php',
|
'PhabricatorPeopleInviteSendController' => 'applications/people/controller/PhabricatorPeopleInviteSendController.php',
|
||||||
'PhabricatorPeopleLdapController' => 'applications/people/controller/PhabricatorPeopleLdapController.php',
|
|
||||||
'PhabricatorPeopleListController' => 'applications/people/controller/PhabricatorPeopleListController.php',
|
'PhabricatorPeopleListController' => 'applications/people/controller/PhabricatorPeopleListController.php',
|
||||||
'PhabricatorPeopleLogQuery' => 'applications/people/query/PhabricatorPeopleLogQuery.php',
|
'PhabricatorPeopleLogQuery' => 'applications/people/query/PhabricatorPeopleLogQuery.php',
|
||||||
'PhabricatorPeopleLogSearchEngine' => 'applications/people/query/PhabricatorPeopleLogSearchEngine.php',
|
'PhabricatorPeopleLogSearchEngine' => 'applications/people/query/PhabricatorPeopleLogSearchEngine.php',
|
||||||
@@ -3901,6 +3952,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorPeopleTransactionQuery' => 'applications/people/query/PhabricatorPeopleTransactionQuery.php',
|
'PhabricatorPeopleTransactionQuery' => 'applications/people/query/PhabricatorPeopleTransactionQuery.php',
|
||||||
'PhabricatorPeopleUserFunctionDatasource' => 'applications/people/typeahead/PhabricatorPeopleUserFunctionDatasource.php',
|
'PhabricatorPeopleUserFunctionDatasource' => 'applications/people/typeahead/PhabricatorPeopleUserFunctionDatasource.php',
|
||||||
'PhabricatorPeopleUserPHIDType' => 'applications/people/phid/PhabricatorPeopleUserPHIDType.php',
|
'PhabricatorPeopleUserPHIDType' => 'applications/people/phid/PhabricatorPeopleUserPHIDType.php',
|
||||||
|
'PhabricatorPeopleUsernameMailEngine' => 'applications/people/mail/PhabricatorPeopleUsernameMailEngine.php',
|
||||||
'PhabricatorPeopleWelcomeController' => 'applications/people/controller/PhabricatorPeopleWelcomeController.php',
|
'PhabricatorPeopleWelcomeController' => 'applications/people/controller/PhabricatorPeopleWelcomeController.php',
|
||||||
'PhabricatorPeopleWelcomeMailEngine' => 'applications/people/mail/PhabricatorPeopleWelcomeMailEngine.php',
|
'PhabricatorPeopleWelcomeMailEngine' => 'applications/people/mail/PhabricatorPeopleWelcomeMailEngine.php',
|
||||||
'PhabricatorPhabricatorAuthProvider' => 'applications/auth/provider/PhabricatorPhabricatorAuthProvider.php',
|
'PhabricatorPhabricatorAuthProvider' => 'applications/auth/provider/PhabricatorPhabricatorAuthProvider.php',
|
||||||
@@ -4009,6 +4061,8 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorProfileMenuItemConfigurationTransactionQuery' => 'applications/search/query/PhabricatorProfileMenuItemConfigurationTransactionQuery.php',
|
'PhabricatorProfileMenuItemConfigurationTransactionQuery' => 'applications/search/query/PhabricatorProfileMenuItemConfigurationTransactionQuery.php',
|
||||||
'PhabricatorProfileMenuItemIconSet' => 'applications/search/menuitem/PhabricatorProfileMenuItemIconSet.php',
|
'PhabricatorProfileMenuItemIconSet' => 'applications/search/menuitem/PhabricatorProfileMenuItemIconSet.php',
|
||||||
'PhabricatorProfileMenuItemPHIDType' => 'applications/search/phidtype/PhabricatorProfileMenuItemPHIDType.php',
|
'PhabricatorProfileMenuItemPHIDType' => 'applications/search/phidtype/PhabricatorProfileMenuItemPHIDType.php',
|
||||||
|
'PhabricatorProfileMenuItemView' => 'applications/search/engine/PhabricatorProfileMenuItemView.php',
|
||||||
|
'PhabricatorProfileMenuItemViewList' => 'applications/search/engine/PhabricatorProfileMenuItemViewList.php',
|
||||||
'PhabricatorProject' => 'applications/project/storage/PhabricatorProject.php',
|
'PhabricatorProject' => 'applications/project/storage/PhabricatorProject.php',
|
||||||
'PhabricatorProjectAddHeraldAction' => 'applications/project/herald/PhabricatorProjectAddHeraldAction.php',
|
'PhabricatorProjectAddHeraldAction' => 'applications/project/herald/PhabricatorProjectAddHeraldAction.php',
|
||||||
'PhabricatorProjectApplication' => 'applications/project/application/PhabricatorProjectApplication.php',
|
'PhabricatorProjectApplication' => 'applications/project/application/PhabricatorProjectApplication.php',
|
||||||
@@ -4025,17 +4079,33 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorProjectColorTransaction' => 'applications/project/xaction/PhabricatorProjectColorTransaction.php',
|
'PhabricatorProjectColorTransaction' => 'applications/project/xaction/PhabricatorProjectColorTransaction.php',
|
||||||
'PhabricatorProjectColorsConfigType' => 'applications/project/config/PhabricatorProjectColorsConfigType.php',
|
'PhabricatorProjectColorsConfigType' => 'applications/project/config/PhabricatorProjectColorsConfigType.php',
|
||||||
'PhabricatorProjectColumn' => 'applications/project/storage/PhabricatorProjectColumn.php',
|
'PhabricatorProjectColumn' => 'applications/project/storage/PhabricatorProjectColumn.php',
|
||||||
|
'PhabricatorProjectColumnAuthorOrder' => 'applications/project/order/PhabricatorProjectColumnAuthorOrder.php',
|
||||||
|
'PhabricatorProjectColumnCreatedOrder' => 'applications/project/order/PhabricatorProjectColumnCreatedOrder.php',
|
||||||
'PhabricatorProjectColumnDetailController' => 'applications/project/controller/PhabricatorProjectColumnDetailController.php',
|
'PhabricatorProjectColumnDetailController' => 'applications/project/controller/PhabricatorProjectColumnDetailController.php',
|
||||||
'PhabricatorProjectColumnEditController' => 'applications/project/controller/PhabricatorProjectColumnEditController.php',
|
'PhabricatorProjectColumnEditController' => 'applications/project/controller/PhabricatorProjectColumnEditController.php',
|
||||||
|
'PhabricatorProjectColumnHeader' => 'applications/project/order/PhabricatorProjectColumnHeader.php',
|
||||||
'PhabricatorProjectColumnHideController' => 'applications/project/controller/PhabricatorProjectColumnHideController.php',
|
'PhabricatorProjectColumnHideController' => 'applications/project/controller/PhabricatorProjectColumnHideController.php',
|
||||||
|
'PhabricatorProjectColumnLimitTransaction' => 'applications/project/xaction/column/PhabricatorProjectColumnLimitTransaction.php',
|
||||||
|
'PhabricatorProjectColumnNameTransaction' => 'applications/project/xaction/column/PhabricatorProjectColumnNameTransaction.php',
|
||||||
|
'PhabricatorProjectColumnNaturalOrder' => 'applications/project/order/PhabricatorProjectColumnNaturalOrder.php',
|
||||||
|
'PhabricatorProjectColumnOrder' => 'applications/project/order/PhabricatorProjectColumnOrder.php',
|
||||||
|
'PhabricatorProjectColumnOwnerOrder' => 'applications/project/order/PhabricatorProjectColumnOwnerOrder.php',
|
||||||
'PhabricatorProjectColumnPHIDType' => 'applications/project/phid/PhabricatorProjectColumnPHIDType.php',
|
'PhabricatorProjectColumnPHIDType' => 'applications/project/phid/PhabricatorProjectColumnPHIDType.php',
|
||||||
|
'PhabricatorProjectColumnPointsOrder' => 'applications/project/order/PhabricatorProjectColumnPointsOrder.php',
|
||||||
'PhabricatorProjectColumnPosition' => 'applications/project/storage/PhabricatorProjectColumnPosition.php',
|
'PhabricatorProjectColumnPosition' => 'applications/project/storage/PhabricatorProjectColumnPosition.php',
|
||||||
'PhabricatorProjectColumnPositionQuery' => 'applications/project/query/PhabricatorProjectColumnPositionQuery.php',
|
'PhabricatorProjectColumnPositionQuery' => 'applications/project/query/PhabricatorProjectColumnPositionQuery.php',
|
||||||
|
'PhabricatorProjectColumnPriorityOrder' => 'applications/project/order/PhabricatorProjectColumnPriorityOrder.php',
|
||||||
'PhabricatorProjectColumnQuery' => 'applications/project/query/PhabricatorProjectColumnQuery.php',
|
'PhabricatorProjectColumnQuery' => 'applications/project/query/PhabricatorProjectColumnQuery.php',
|
||||||
|
'PhabricatorProjectColumnRemoveTriggerController' => 'applications/project/controller/PhabricatorProjectColumnRemoveTriggerController.php',
|
||||||
'PhabricatorProjectColumnSearchEngine' => 'applications/project/query/PhabricatorProjectColumnSearchEngine.php',
|
'PhabricatorProjectColumnSearchEngine' => 'applications/project/query/PhabricatorProjectColumnSearchEngine.php',
|
||||||
|
'PhabricatorProjectColumnStatusOrder' => 'applications/project/order/PhabricatorProjectColumnStatusOrder.php',
|
||||||
|
'PhabricatorProjectColumnStatusTransaction' => 'applications/project/xaction/column/PhabricatorProjectColumnStatusTransaction.php',
|
||||||
|
'PhabricatorProjectColumnTitleOrder' => 'applications/project/order/PhabricatorProjectColumnTitleOrder.php',
|
||||||
'PhabricatorProjectColumnTransaction' => 'applications/project/storage/PhabricatorProjectColumnTransaction.php',
|
'PhabricatorProjectColumnTransaction' => 'applications/project/storage/PhabricatorProjectColumnTransaction.php',
|
||||||
'PhabricatorProjectColumnTransactionEditor' => 'applications/project/editor/PhabricatorProjectColumnTransactionEditor.php',
|
'PhabricatorProjectColumnTransactionEditor' => 'applications/project/editor/PhabricatorProjectColumnTransactionEditor.php',
|
||||||
'PhabricatorProjectColumnTransactionQuery' => 'applications/project/query/PhabricatorProjectColumnTransactionQuery.php',
|
'PhabricatorProjectColumnTransactionQuery' => 'applications/project/query/PhabricatorProjectColumnTransactionQuery.php',
|
||||||
|
'PhabricatorProjectColumnTransactionType' => 'applications/project/xaction/column/PhabricatorProjectColumnTransactionType.php',
|
||||||
|
'PhabricatorProjectColumnTriggerTransaction' => 'applications/project/xaction/column/PhabricatorProjectColumnTriggerTransaction.php',
|
||||||
'PhabricatorProjectConfigOptions' => 'applications/project/config/PhabricatorProjectConfigOptions.php',
|
'PhabricatorProjectConfigOptions' => 'applications/project/config/PhabricatorProjectConfigOptions.php',
|
||||||
'PhabricatorProjectConfiguredCustomField' => 'applications/project/customfield/PhabricatorProjectConfiguredCustomField.php',
|
'PhabricatorProjectConfiguredCustomField' => 'applications/project/customfield/PhabricatorProjectConfiguredCustomField.php',
|
||||||
'PhabricatorProjectController' => 'applications/project/controller/PhabricatorProjectController.php',
|
'PhabricatorProjectController' => 'applications/project/controller/PhabricatorProjectController.php',
|
||||||
@@ -4050,6 +4120,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorProjectDefaultController' => 'applications/project/controller/PhabricatorProjectDefaultController.php',
|
'PhabricatorProjectDefaultController' => 'applications/project/controller/PhabricatorProjectDefaultController.php',
|
||||||
'PhabricatorProjectDescriptionField' => 'applications/project/customfield/PhabricatorProjectDescriptionField.php',
|
'PhabricatorProjectDescriptionField' => 'applications/project/customfield/PhabricatorProjectDescriptionField.php',
|
||||||
'PhabricatorProjectDetailsProfileMenuItem' => 'applications/project/menuitem/PhabricatorProjectDetailsProfileMenuItem.php',
|
'PhabricatorProjectDetailsProfileMenuItem' => 'applications/project/menuitem/PhabricatorProjectDetailsProfileMenuItem.php',
|
||||||
|
'PhabricatorProjectDropEffect' => 'applications/project/icon/PhabricatorProjectDropEffect.php',
|
||||||
'PhabricatorProjectEditController' => 'applications/project/controller/PhabricatorProjectEditController.php',
|
'PhabricatorProjectEditController' => 'applications/project/controller/PhabricatorProjectEditController.php',
|
||||||
'PhabricatorProjectEditEngine' => 'applications/project/engine/PhabricatorProjectEditEngine.php',
|
'PhabricatorProjectEditEngine' => 'applications/project/engine/PhabricatorProjectEditEngine.php',
|
||||||
'PhabricatorProjectEditPictureController' => 'applications/project/controller/PhabricatorProjectEditPictureController.php',
|
'PhabricatorProjectEditPictureController' => 'applications/project/controller/PhabricatorProjectEditPictureController.php',
|
||||||
@@ -4128,6 +4199,30 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorProjectTransactionEditor' => 'applications/project/editor/PhabricatorProjectTransactionEditor.php',
|
'PhabricatorProjectTransactionEditor' => 'applications/project/editor/PhabricatorProjectTransactionEditor.php',
|
||||||
'PhabricatorProjectTransactionQuery' => 'applications/project/query/PhabricatorProjectTransactionQuery.php',
|
'PhabricatorProjectTransactionQuery' => 'applications/project/query/PhabricatorProjectTransactionQuery.php',
|
||||||
'PhabricatorProjectTransactionType' => 'applications/project/xaction/PhabricatorProjectTransactionType.php',
|
'PhabricatorProjectTransactionType' => 'applications/project/xaction/PhabricatorProjectTransactionType.php',
|
||||||
|
'PhabricatorProjectTrigger' => 'applications/project/storage/PhabricatorProjectTrigger.php',
|
||||||
|
'PhabricatorProjectTriggerController' => 'applications/project/controller/trigger/PhabricatorProjectTriggerController.php',
|
||||||
|
'PhabricatorProjectTriggerCorruptionException' => 'applications/project/exception/PhabricatorProjectTriggerCorruptionException.php',
|
||||||
|
'PhabricatorProjectTriggerEditController' => 'applications/project/controller/trigger/PhabricatorProjectTriggerEditController.php',
|
||||||
|
'PhabricatorProjectTriggerEditor' => 'applications/project/editor/PhabricatorProjectTriggerEditor.php',
|
||||||
|
'PhabricatorProjectTriggerInvalidRule' => 'applications/project/trigger/PhabricatorProjectTriggerInvalidRule.php',
|
||||||
|
'PhabricatorProjectTriggerListController' => 'applications/project/controller/trigger/PhabricatorProjectTriggerListController.php',
|
||||||
|
'PhabricatorProjectTriggerManiphestPriorityRule' => 'applications/project/trigger/PhabricatorProjectTriggerManiphestPriorityRule.php',
|
||||||
|
'PhabricatorProjectTriggerManiphestStatusRule' => 'applications/project/trigger/PhabricatorProjectTriggerManiphestStatusRule.php',
|
||||||
|
'PhabricatorProjectTriggerNameTransaction' => 'applications/project/xaction/trigger/PhabricatorProjectTriggerNameTransaction.php',
|
||||||
|
'PhabricatorProjectTriggerPHIDType' => 'applications/project/phid/PhabricatorProjectTriggerPHIDType.php',
|
||||||
|
'PhabricatorProjectTriggerPlaySoundRule' => 'applications/project/trigger/PhabricatorProjectTriggerPlaySoundRule.php',
|
||||||
|
'PhabricatorProjectTriggerQuery' => 'applications/project/query/PhabricatorProjectTriggerQuery.php',
|
||||||
|
'PhabricatorProjectTriggerRule' => 'applications/project/trigger/PhabricatorProjectTriggerRule.php',
|
||||||
|
'PhabricatorProjectTriggerRuleRecord' => 'applications/project/trigger/PhabricatorProjectTriggerRuleRecord.php',
|
||||||
|
'PhabricatorProjectTriggerRulesetTransaction' => 'applications/project/xaction/trigger/PhabricatorProjectTriggerRulesetTransaction.php',
|
||||||
|
'PhabricatorProjectTriggerSearchEngine' => 'applications/project/query/PhabricatorProjectTriggerSearchEngine.php',
|
||||||
|
'PhabricatorProjectTriggerTransaction' => 'applications/project/storage/PhabricatorProjectTriggerTransaction.php',
|
||||||
|
'PhabricatorProjectTriggerTransactionQuery' => 'applications/project/query/PhabricatorProjectTriggerTransactionQuery.php',
|
||||||
|
'PhabricatorProjectTriggerTransactionType' => 'applications/project/xaction/trigger/PhabricatorProjectTriggerTransactionType.php',
|
||||||
|
'PhabricatorProjectTriggerUnknownRule' => 'applications/project/trigger/PhabricatorProjectTriggerUnknownRule.php',
|
||||||
|
'PhabricatorProjectTriggerUsage' => 'applications/project/storage/PhabricatorProjectTriggerUsage.php',
|
||||||
|
'PhabricatorProjectTriggerUsageIndexEngineExtension' => 'applications/project/engineextension/PhabricatorProjectTriggerUsageIndexEngineExtension.php',
|
||||||
|
'PhabricatorProjectTriggerViewController' => 'applications/project/controller/trigger/PhabricatorProjectTriggerViewController.php',
|
||||||
'PhabricatorProjectTypeTransaction' => 'applications/project/xaction/PhabricatorProjectTypeTransaction.php',
|
'PhabricatorProjectTypeTransaction' => 'applications/project/xaction/PhabricatorProjectTypeTransaction.php',
|
||||||
'PhabricatorProjectUIEventListener' => 'applications/project/events/PhabricatorProjectUIEventListener.php',
|
'PhabricatorProjectUIEventListener' => 'applications/project/events/PhabricatorProjectUIEventListener.php',
|
||||||
'PhabricatorProjectUpdateController' => 'applications/project/controller/PhabricatorProjectUpdateController.php',
|
'PhabricatorProjectUpdateController' => 'applications/project/controller/PhabricatorProjectUpdateController.php',
|
||||||
@@ -4159,6 +4254,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorPygmentSetupCheck' => 'applications/config/check/PhabricatorPygmentSetupCheck.php',
|
'PhabricatorPygmentSetupCheck' => 'applications/config/check/PhabricatorPygmentSetupCheck.php',
|
||||||
'PhabricatorQuery' => 'infrastructure/query/PhabricatorQuery.php',
|
'PhabricatorQuery' => 'infrastructure/query/PhabricatorQuery.php',
|
||||||
'PhabricatorQueryConstraint' => 'infrastructure/query/constraint/PhabricatorQueryConstraint.php',
|
'PhabricatorQueryConstraint' => 'infrastructure/query/constraint/PhabricatorQueryConstraint.php',
|
||||||
|
'PhabricatorQueryCursor' => 'infrastructure/query/policy/PhabricatorQueryCursor.php',
|
||||||
'PhabricatorQueryIterator' => 'infrastructure/storage/lisk/PhabricatorQueryIterator.php',
|
'PhabricatorQueryIterator' => 'infrastructure/storage/lisk/PhabricatorQueryIterator.php',
|
||||||
'PhabricatorQueryOrderItem' => 'infrastructure/query/order/PhabricatorQueryOrderItem.php',
|
'PhabricatorQueryOrderItem' => 'infrastructure/query/order/PhabricatorQueryOrderItem.php',
|
||||||
'PhabricatorQueryOrderTestCase' => 'infrastructure/query/order/__tests__/PhabricatorQueryOrderTestCase.php',
|
'PhabricatorQueryOrderTestCase' => 'infrastructure/query/order/__tests__/PhabricatorQueryOrderTestCase.php',
|
||||||
@@ -4681,6 +4777,8 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorUnitTestContentSource' => 'infrastructure/contentsource/PhabricatorUnitTestContentSource.php',
|
'PhabricatorUnitTestContentSource' => 'infrastructure/contentsource/PhabricatorUnitTestContentSource.php',
|
||||||
'PhabricatorUnitsTestCase' => 'view/__tests__/PhabricatorUnitsTestCase.php',
|
'PhabricatorUnitsTestCase' => 'view/__tests__/PhabricatorUnitsTestCase.php',
|
||||||
'PhabricatorUnknownContentSource' => 'infrastructure/contentsource/PhabricatorUnknownContentSource.php',
|
'PhabricatorUnknownContentSource' => 'infrastructure/contentsource/PhabricatorUnknownContentSource.php',
|
||||||
|
'PhabricatorUnlockEngine' => 'applications/system/engine/PhabricatorUnlockEngine.php',
|
||||||
|
'PhabricatorUnlockableInterface' => 'applications/system/interface/PhabricatorUnlockableInterface.php',
|
||||||
'PhabricatorUnsubscribedFromObjectEdgeType' => 'applications/transactions/edges/PhabricatorUnsubscribedFromObjectEdgeType.php',
|
'PhabricatorUnsubscribedFromObjectEdgeType' => 'applications/transactions/edges/PhabricatorUnsubscribedFromObjectEdgeType.php',
|
||||||
'PhabricatorUser' => 'applications/people/storage/PhabricatorUser.php',
|
'PhabricatorUser' => 'applications/people/storage/PhabricatorUser.php',
|
||||||
'PhabricatorUserApproveTransaction' => 'applications/people/xaction/PhabricatorUserApproveTransaction.php',
|
'PhabricatorUserApproveTransaction' => 'applications/people/xaction/PhabricatorUserApproveTransaction.php',
|
||||||
@@ -4988,6 +5086,7 @@ phutil_register_library_map(array(
|
|||||||
'PhortuneAccountViewController' => 'applications/phortune/controller/account/PhortuneAccountViewController.php',
|
'PhortuneAccountViewController' => 'applications/phortune/controller/account/PhortuneAccountViewController.php',
|
||||||
'PhortuneAdHocCart' => 'applications/phortune/cart/PhortuneAdHocCart.php',
|
'PhortuneAdHocCart' => 'applications/phortune/cart/PhortuneAdHocCart.php',
|
||||||
'PhortuneAdHocProduct' => 'applications/phortune/product/PhortuneAdHocProduct.php',
|
'PhortuneAdHocProduct' => 'applications/phortune/product/PhortuneAdHocProduct.php',
|
||||||
|
'PhortuneAddPaymentMethodAction' => 'applications/phortune/action/PhortuneAddPaymentMethodAction.php',
|
||||||
'PhortuneCart' => 'applications/phortune/storage/PhortuneCart.php',
|
'PhortuneCart' => 'applications/phortune/storage/PhortuneCart.php',
|
||||||
'PhortuneCartAcceptController' => 'applications/phortune/controller/cart/PhortuneCartAcceptController.php',
|
'PhortuneCartAcceptController' => 'applications/phortune/controller/cart/PhortuneCartAcceptController.php',
|
||||||
'PhortuneCartCancelController' => 'applications/phortune/controller/cart/PhortuneCartCancelController.php',
|
'PhortuneCartCancelController' => 'applications/phortune/controller/cart/PhortuneCartCancelController.php',
|
||||||
@@ -5016,6 +5115,7 @@ phutil_register_library_map(array(
|
|||||||
'PhortuneCurrencySerializer' => 'applications/phortune/currency/PhortuneCurrencySerializer.php',
|
'PhortuneCurrencySerializer' => 'applications/phortune/currency/PhortuneCurrencySerializer.php',
|
||||||
'PhortuneCurrencyTestCase' => 'applications/phortune/currency/__tests__/PhortuneCurrencyTestCase.php',
|
'PhortuneCurrencyTestCase' => 'applications/phortune/currency/__tests__/PhortuneCurrencyTestCase.php',
|
||||||
'PhortuneDAO' => 'applications/phortune/storage/PhortuneDAO.php',
|
'PhortuneDAO' => 'applications/phortune/storage/PhortuneDAO.php',
|
||||||
|
'PhortuneDisplayException' => 'applications/phortune/exception/PhortuneDisplayException.php',
|
||||||
'PhortuneErrCode' => 'applications/phortune/constants/PhortuneErrCode.php',
|
'PhortuneErrCode' => 'applications/phortune/constants/PhortuneErrCode.php',
|
||||||
'PhortuneInvoiceView' => 'applications/phortune/view/PhortuneInvoiceView.php',
|
'PhortuneInvoiceView' => 'applications/phortune/view/PhortuneInvoiceView.php',
|
||||||
'PhortuneLandingController' => 'applications/phortune/controller/PhortuneLandingController.php',
|
'PhortuneLandingController' => 'applications/phortune/controller/PhortuneLandingController.php',
|
||||||
@@ -6165,6 +6265,7 @@ phutil_register_library_map(array(
|
|||||||
'DifferentialRevisionUpdateTransaction' => 'DifferentialRevisionTransactionType',
|
'DifferentialRevisionUpdateTransaction' => 'DifferentialRevisionTransactionType',
|
||||||
'DifferentialRevisionViewController' => 'DifferentialController',
|
'DifferentialRevisionViewController' => 'DifferentialController',
|
||||||
'DifferentialRevisionVoidTransaction' => 'DifferentialRevisionTransactionType',
|
'DifferentialRevisionVoidTransaction' => 'DifferentialRevisionTransactionType',
|
||||||
|
'DifferentialRevisionWrongBuildsTransaction' => 'DifferentialRevisionTransactionType',
|
||||||
'DifferentialRevisionWrongStateTransaction' => 'DifferentialRevisionTransactionType',
|
'DifferentialRevisionWrongStateTransaction' => 'DifferentialRevisionTransactionType',
|
||||||
'DifferentialSchemaSpec' => 'PhabricatorConfigSchemaSpec',
|
'DifferentialSchemaSpec' => 'PhabricatorConfigSchemaSpec',
|
||||||
'DifferentialSetDiffPropertyConduitAPIMethod' => 'DifferentialConduitAPIMethod',
|
'DifferentialSetDiffPropertyConduitAPIMethod' => 'DifferentialConduitAPIMethod',
|
||||||
@@ -6930,19 +7031,28 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorNgramsInterface',
|
'PhabricatorNgramsInterface',
|
||||||
'PhabricatorConduitResultInterface',
|
'PhabricatorConduitResultInterface',
|
||||||
'PhabricatorProjectInterface',
|
'PhabricatorProjectInterface',
|
||||||
|
'PhabricatorPolicyCodexInterface',
|
||||||
),
|
),
|
||||||
|
'HarbormasterBuildPlanBehavior' => 'Phobject',
|
||||||
|
'HarbormasterBuildPlanBehaviorOption' => 'Phobject',
|
||||||
|
'HarbormasterBuildPlanBehaviorTransaction' => 'HarbormasterBuildPlanTransactionType',
|
||||||
'HarbormasterBuildPlanDatasource' => 'PhabricatorTypeaheadDatasource',
|
'HarbormasterBuildPlanDatasource' => 'PhabricatorTypeaheadDatasource',
|
||||||
'HarbormasterBuildPlanDefaultEditCapability' => 'PhabricatorPolicyCapability',
|
'HarbormasterBuildPlanDefaultEditCapability' => 'PhabricatorPolicyCapability',
|
||||||
'HarbormasterBuildPlanDefaultViewCapability' => 'PhabricatorPolicyCapability',
|
'HarbormasterBuildPlanDefaultViewCapability' => 'PhabricatorPolicyCapability',
|
||||||
|
'HarbormasterBuildPlanEditAPIMethod' => 'PhabricatorEditEngineAPIMethod',
|
||||||
'HarbormasterBuildPlanEditEngine' => 'PhabricatorEditEngine',
|
'HarbormasterBuildPlanEditEngine' => 'PhabricatorEditEngine',
|
||||||
'HarbormasterBuildPlanEditor' => 'PhabricatorApplicationTransactionEditor',
|
'HarbormasterBuildPlanEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||||
'HarbormasterBuildPlanNameNgrams' => 'PhabricatorSearchNgrams',
|
'HarbormasterBuildPlanNameNgrams' => 'PhabricatorSearchNgrams',
|
||||||
|
'HarbormasterBuildPlanNameTransaction' => 'HarbormasterBuildPlanTransactionType',
|
||||||
'HarbormasterBuildPlanPHIDType' => 'PhabricatorPHIDType',
|
'HarbormasterBuildPlanPHIDType' => 'PhabricatorPHIDType',
|
||||||
|
'HarbormasterBuildPlanPolicyCodex' => 'PhabricatorPolicyCodex',
|
||||||
'HarbormasterBuildPlanQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'HarbormasterBuildPlanQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
'HarbormasterBuildPlanSearchAPIMethod' => 'PhabricatorSearchEngineAPIMethod',
|
'HarbormasterBuildPlanSearchAPIMethod' => 'PhabricatorSearchEngineAPIMethod',
|
||||||
'HarbormasterBuildPlanSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
'HarbormasterBuildPlanSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
'HarbormasterBuildPlanTransaction' => 'PhabricatorApplicationTransaction',
|
'HarbormasterBuildPlanStatusTransaction' => 'HarbormasterBuildPlanTransactionType',
|
||||||
|
'HarbormasterBuildPlanTransaction' => 'PhabricatorModularTransaction',
|
||||||
'HarbormasterBuildPlanTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'HarbormasterBuildPlanTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
|
'HarbormasterBuildPlanTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
'HarbormasterBuildQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'HarbormasterBuildQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
'HarbormasterBuildRequest' => 'Phobject',
|
'HarbormasterBuildRequest' => 'Phobject',
|
||||||
'HarbormasterBuildSearchConduitAPIMethod' => 'PhabricatorSearchEngineAPIMethod',
|
'HarbormasterBuildSearchConduitAPIMethod' => 'PhabricatorSearchEngineAPIMethod',
|
||||||
@@ -6980,7 +7090,12 @@ phutil_register_library_map(array(
|
|||||||
'HarbormasterBuildTransaction' => 'PhabricatorApplicationTransaction',
|
'HarbormasterBuildTransaction' => 'PhabricatorApplicationTransaction',
|
||||||
'HarbormasterBuildTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
|
'HarbormasterBuildTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||||
'HarbormasterBuildTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'HarbormasterBuildTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
'HarbormasterBuildUnitMessage' => 'HarbormasterDAO',
|
'HarbormasterBuildUnitMessage' => array(
|
||||||
|
'HarbormasterDAO',
|
||||||
|
'PhabricatorPolicyInterface',
|
||||||
|
),
|
||||||
|
'HarbormasterBuildUnitMessageQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
|
'HarbormasterBuildView' => 'AphrontView',
|
||||||
'HarbormasterBuildViewController' => 'HarbormasterController',
|
'HarbormasterBuildViewController' => 'HarbormasterController',
|
||||||
'HarbormasterBuildWorker' => 'HarbormasterWorker',
|
'HarbormasterBuildWorker' => 'HarbormasterWorker',
|
||||||
'HarbormasterBuildable' => array(
|
'HarbormasterBuildable' => array(
|
||||||
@@ -7037,6 +7152,7 @@ phutil_register_library_map(array(
|
|||||||
'HarbormasterMessageType' => 'Phobject',
|
'HarbormasterMessageType' => 'Phobject',
|
||||||
'HarbormasterObject' => 'HarbormasterDAO',
|
'HarbormasterObject' => 'HarbormasterDAO',
|
||||||
'HarbormasterOtherBuildStepGroup' => 'HarbormasterBuildStepGroup',
|
'HarbormasterOtherBuildStepGroup' => 'HarbormasterBuildStepGroup',
|
||||||
|
'HarbormasterPlanBehaviorController' => 'HarbormasterPlanController',
|
||||||
'HarbormasterPlanController' => 'HarbormasterController',
|
'HarbormasterPlanController' => 'HarbormasterController',
|
||||||
'HarbormasterPlanDisableController' => 'HarbormasterPlanController',
|
'HarbormasterPlanDisableController' => 'HarbormasterPlanController',
|
||||||
'HarbormasterPlanEditController' => 'HarbormasterPlanController',
|
'HarbormasterPlanEditController' => 'HarbormasterPlanController',
|
||||||
@@ -7050,6 +7166,7 @@ phutil_register_library_map(array(
|
|||||||
'HarbormasterQueryBuildsConduitAPIMethod' => 'HarbormasterConduitAPIMethod',
|
'HarbormasterQueryBuildsConduitAPIMethod' => 'HarbormasterConduitAPIMethod',
|
||||||
'HarbormasterQueryBuildsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment',
|
'HarbormasterQueryBuildsSearchEngineAttachment' => 'PhabricatorSearchEngineAttachment',
|
||||||
'HarbormasterRemarkupRule' => 'PhabricatorObjectRemarkupRule',
|
'HarbormasterRemarkupRule' => 'PhabricatorObjectRemarkupRule',
|
||||||
|
'HarbormasterRestartException' => 'Exception',
|
||||||
'HarbormasterRunBuildPlansHeraldAction' => 'HeraldAction',
|
'HarbormasterRunBuildPlansHeraldAction' => 'HeraldAction',
|
||||||
'HarbormasterSchemaSpec' => 'PhabricatorConfigSchemaSpec',
|
'HarbormasterSchemaSpec' => 'PhabricatorConfigSchemaSpec',
|
||||||
'HarbormasterScratchTable' => 'HarbormasterDAO',
|
'HarbormasterScratchTable' => 'HarbormasterDAO',
|
||||||
@@ -7059,6 +7176,7 @@ phutil_register_library_map(array(
|
|||||||
'HarbormasterStepDeleteController' => 'HarbormasterPlanController',
|
'HarbormasterStepDeleteController' => 'HarbormasterPlanController',
|
||||||
'HarbormasterStepEditController' => 'HarbormasterPlanController',
|
'HarbormasterStepEditController' => 'HarbormasterPlanController',
|
||||||
'HarbormasterStepViewController' => 'HarbormasterPlanController',
|
'HarbormasterStepViewController' => 'HarbormasterPlanController',
|
||||||
|
'HarbormasterString' => 'HarbormasterDAO',
|
||||||
'HarbormasterTargetEngine' => 'Phobject',
|
'HarbormasterTargetEngine' => 'Phobject',
|
||||||
'HarbormasterTargetSearchAPIMethod' => 'PhabricatorSearchEngineAPIMethod',
|
'HarbormasterTargetSearchAPIMethod' => 'PhabricatorSearchEngineAPIMethod',
|
||||||
'HarbormasterTargetWorker' => 'HarbormasterWorker',
|
'HarbormasterTargetWorker' => 'HarbormasterWorker',
|
||||||
@@ -7148,24 +7266,31 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorFlaggableInterface',
|
'PhabricatorFlaggableInterface',
|
||||||
'PhabricatorPolicyInterface',
|
'PhabricatorPolicyInterface',
|
||||||
'PhabricatorDestructibleInterface',
|
'PhabricatorDestructibleInterface',
|
||||||
|
'PhabricatorIndexableInterface',
|
||||||
'PhabricatorSubscribableInterface',
|
'PhabricatorSubscribableInterface',
|
||||||
),
|
),
|
||||||
|
'HeraldRuleActionAffectsObjectEdgeType' => 'PhabricatorEdgeType',
|
||||||
'HeraldRuleAdapter' => 'HeraldAdapter',
|
'HeraldRuleAdapter' => 'HeraldAdapter',
|
||||||
'HeraldRuleAdapterField' => 'HeraldRuleField',
|
'HeraldRuleAdapterField' => 'HeraldRuleField',
|
||||||
'HeraldRuleController' => 'HeraldController',
|
'HeraldRuleController' => 'HeraldController',
|
||||||
'HeraldRuleDatasource' => 'PhabricatorTypeaheadDatasource',
|
'HeraldRuleDatasource' => 'PhabricatorTypeaheadDatasource',
|
||||||
|
'HeraldRuleDisableTransaction' => 'HeraldRuleTransactionType',
|
||||||
|
'HeraldRuleEditTransaction' => 'HeraldRuleTransactionType',
|
||||||
'HeraldRuleEditor' => 'PhabricatorApplicationTransactionEditor',
|
'HeraldRuleEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||||
'HeraldRuleField' => 'HeraldField',
|
'HeraldRuleField' => 'HeraldField',
|
||||||
'HeraldRuleFieldGroup' => 'HeraldFieldGroup',
|
'HeraldRuleFieldGroup' => 'HeraldFieldGroup',
|
||||||
|
'HeraldRuleIndexEngineExtension' => 'PhabricatorIndexEngineExtension',
|
||||||
'HeraldRuleListController' => 'HeraldController',
|
'HeraldRuleListController' => 'HeraldController',
|
||||||
|
'HeraldRuleListView' => 'AphrontView',
|
||||||
|
'HeraldRuleNameTransaction' => 'HeraldRuleTransactionType',
|
||||||
'HeraldRulePHIDType' => 'PhabricatorPHIDType',
|
'HeraldRulePHIDType' => 'PhabricatorPHIDType',
|
||||||
'HeraldRuleQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'HeraldRuleQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
'HeraldRuleReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler',
|
'HeraldRuleReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler',
|
||||||
'HeraldRuleSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
'HeraldRuleSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
'HeraldRuleSerializer' => 'Phobject',
|
'HeraldRuleSerializer' => 'Phobject',
|
||||||
'HeraldRuleTestCase' => 'PhabricatorTestCase',
|
'HeraldRuleTestCase' => 'PhabricatorTestCase',
|
||||||
'HeraldRuleTransaction' => 'PhabricatorApplicationTransaction',
|
'HeraldRuleTransaction' => 'PhabricatorModularTransaction',
|
||||||
'HeraldRuleTransactionComment' => 'PhabricatorApplicationTransactionComment',
|
'HeraldRuleTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
'HeraldRuleTranscript' => 'Phobject',
|
'HeraldRuleTranscript' => 'Phobject',
|
||||||
'HeraldRuleTypeConfig' => 'Phobject',
|
'HeraldRuleTypeConfig' => 'Phobject',
|
||||||
'HeraldRuleTypeDatasource' => 'PhabricatorTypeaheadDatasource',
|
'HeraldRuleTypeDatasource' => 'PhabricatorTypeaheadDatasource',
|
||||||
@@ -7354,7 +7479,6 @@ phutil_register_library_map(array(
|
|||||||
'ManiphestStatusEmailCommand' => 'ManiphestEmailCommand',
|
'ManiphestStatusEmailCommand' => 'ManiphestEmailCommand',
|
||||||
'ManiphestStatusSearchConduitAPIMethod' => 'ManiphestConduitAPIMethod',
|
'ManiphestStatusSearchConduitAPIMethod' => 'ManiphestConduitAPIMethod',
|
||||||
'ManiphestStatusesConfigType' => 'PhabricatorJSONConfigType',
|
'ManiphestStatusesConfigType' => 'PhabricatorJSONConfigType',
|
||||||
'ManiphestSubpriorityController' => 'ManiphestController',
|
|
||||||
'ManiphestSubtypesConfigType' => 'PhabricatorJSONConfigType',
|
'ManiphestSubtypesConfigType' => 'PhabricatorJSONConfigType',
|
||||||
'ManiphestTask' => array(
|
'ManiphestTask' => array(
|
||||||
'ManiphestDAO',
|
'ManiphestDAO',
|
||||||
@@ -7377,6 +7501,8 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorEditEngineSubtypeInterface',
|
'PhabricatorEditEngineSubtypeInterface',
|
||||||
'PhabricatorEditEngineLockableInterface',
|
'PhabricatorEditEngineLockableInterface',
|
||||||
'PhabricatorEditEngineMFAInterface',
|
'PhabricatorEditEngineMFAInterface',
|
||||||
|
'PhabricatorPolicyCodexInterface',
|
||||||
|
'PhabricatorUnlockableInterface',
|
||||||
),
|
),
|
||||||
'ManiphestTaskAssignHeraldAction' => 'HeraldAction',
|
'ManiphestTaskAssignHeraldAction' => 'HeraldAction',
|
||||||
'ManiphestTaskAssignOtherHeraldAction' => 'ManiphestTaskAssignHeraldAction',
|
'ManiphestTaskAssignOtherHeraldAction' => 'ManiphestTaskAssignHeraldAction',
|
||||||
@@ -7400,6 +7526,7 @@ phutil_register_library_map(array(
|
|||||||
'ManiphestTaskFerretEngine' => 'PhabricatorFerretEngine',
|
'ManiphestTaskFerretEngine' => 'PhabricatorFerretEngine',
|
||||||
'ManiphestTaskFulltextEngine' => 'PhabricatorFulltextEngine',
|
'ManiphestTaskFulltextEngine' => 'PhabricatorFulltextEngine',
|
||||||
'ManiphestTaskGraph' => 'PhabricatorObjectGraph',
|
'ManiphestTaskGraph' => 'PhabricatorObjectGraph',
|
||||||
|
'ManiphestTaskGraphController' => 'ManiphestController',
|
||||||
'ManiphestTaskHasCommitEdgeType' => 'PhabricatorEdgeType',
|
'ManiphestTaskHasCommitEdgeType' => 'PhabricatorEdgeType',
|
||||||
'ManiphestTaskHasCommitRelationship' => 'ManiphestTaskRelationship',
|
'ManiphestTaskHasCommitRelationship' => 'ManiphestTaskRelationship',
|
||||||
'ManiphestTaskHasDuplicateTaskEdgeType' => 'PhabricatorEdgeType',
|
'ManiphestTaskHasDuplicateTaskEdgeType' => 'PhabricatorEdgeType',
|
||||||
@@ -7427,6 +7554,7 @@ phutil_register_library_map(array(
|
|||||||
'ManiphestTaskParentTransaction' => 'ManiphestTaskTransactionType',
|
'ManiphestTaskParentTransaction' => 'ManiphestTaskTransactionType',
|
||||||
'ManiphestTaskPoints' => 'Phobject',
|
'ManiphestTaskPoints' => 'Phobject',
|
||||||
'ManiphestTaskPointsTransaction' => 'ManiphestTaskTransactionType',
|
'ManiphestTaskPointsTransaction' => 'ManiphestTaskTransactionType',
|
||||||
|
'ManiphestTaskPolicyCodex' => 'PhabricatorPolicyCodex',
|
||||||
'ManiphestTaskPriority' => 'ManiphestConstants',
|
'ManiphestTaskPriority' => 'ManiphestConstants',
|
||||||
'ManiphestTaskPriorityDatasource' => 'PhabricatorTypeaheadDatasource',
|
'ManiphestTaskPriorityDatasource' => 'PhabricatorTypeaheadDatasource',
|
||||||
'ManiphestTaskPriorityHeraldAction' => 'HeraldAction',
|
'ManiphestTaskPriorityHeraldAction' => 'HeraldAction',
|
||||||
@@ -7447,11 +7575,11 @@ phutil_register_library_map(array(
|
|||||||
'ManiphestTaskSubpriorityTransaction' => 'ManiphestTaskTransactionType',
|
'ManiphestTaskSubpriorityTransaction' => 'ManiphestTaskTransactionType',
|
||||||
'ManiphestTaskSubtaskController' => 'ManiphestController',
|
'ManiphestTaskSubtaskController' => 'ManiphestController',
|
||||||
'ManiphestTaskSubtypeDatasource' => 'PhabricatorTypeaheadDatasource',
|
'ManiphestTaskSubtypeDatasource' => 'PhabricatorTypeaheadDatasource',
|
||||||
'ManiphestTaskTestCase' => 'PhabricatorTestCase',
|
|
||||||
'ManiphestTaskTitleHeraldField' => 'ManiphestTaskHeraldField',
|
'ManiphestTaskTitleHeraldField' => 'ManiphestTaskHeraldField',
|
||||||
'ManiphestTaskTitleTransaction' => 'ManiphestTaskTransactionType',
|
'ManiphestTaskTitleTransaction' => 'ManiphestTaskTransactionType',
|
||||||
'ManiphestTaskTransactionType' => 'PhabricatorModularTransactionType',
|
'ManiphestTaskTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
'ManiphestTaskUnblockTransaction' => 'ManiphestTaskTransactionType',
|
'ManiphestTaskUnblockTransaction' => 'ManiphestTaskTransactionType',
|
||||||
|
'ManiphestTaskUnlockEngine' => 'PhabricatorUnlockEngine',
|
||||||
'ManiphestTransaction' => 'PhabricatorModularTransaction',
|
'ManiphestTransaction' => 'PhabricatorModularTransaction',
|
||||||
'ManiphestTransactionComment' => 'PhabricatorApplicationTransactionComment',
|
'ManiphestTransactionComment' => 'PhabricatorApplicationTransactionComment',
|
||||||
'ManiphestTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
|
'ManiphestTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||||
@@ -7930,6 +8058,8 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorAuthChallengeGarbageCollector' => 'PhabricatorGarbageCollector',
|
'PhabricatorAuthChallengeGarbageCollector' => 'PhabricatorGarbageCollector',
|
||||||
'PhabricatorAuthChallengePHIDType' => 'PhabricatorPHIDType',
|
'PhabricatorAuthChallengePHIDType' => 'PhabricatorPHIDType',
|
||||||
'PhabricatorAuthChallengeQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'PhabricatorAuthChallengeQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
|
'PhabricatorAuthChallengeStatusController' => 'PhabricatorAuthController',
|
||||||
|
'PhabricatorAuthChallengeUpdate' => 'Phobject',
|
||||||
'PhabricatorAuthChangePasswordAction' => 'PhabricatorSystemAction',
|
'PhabricatorAuthChangePasswordAction' => 'PhabricatorSystemAction',
|
||||||
'PhabricatorAuthConduitAPIMethod' => 'ConduitAPIMethod',
|
'PhabricatorAuthConduitAPIMethod' => 'ConduitAPIMethod',
|
||||||
'PhabricatorAuthConduitTokenRevoker' => 'PhabricatorAuthRevoker',
|
'PhabricatorAuthConduitTokenRevoker' => 'PhabricatorAuthRevoker',
|
||||||
@@ -8024,9 +8154,9 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorAuthInviteVerifyException' => 'PhabricatorAuthInviteDialogException',
|
'PhabricatorAuthInviteVerifyException' => 'PhabricatorAuthInviteDialogException',
|
||||||
'PhabricatorAuthInviteWorker' => 'PhabricatorWorker',
|
'PhabricatorAuthInviteWorker' => 'PhabricatorWorker',
|
||||||
'PhabricatorAuthLinkController' => 'PhabricatorAuthController',
|
'PhabricatorAuthLinkController' => 'PhabricatorAuthController',
|
||||||
|
'PhabricatorAuthLinkMessageType' => 'PhabricatorAuthMessageType',
|
||||||
'PhabricatorAuthListController' => 'PhabricatorAuthProviderConfigController',
|
'PhabricatorAuthListController' => 'PhabricatorAuthProviderConfigController',
|
||||||
'PhabricatorAuthLoginController' => 'PhabricatorAuthController',
|
'PhabricatorAuthLoginController' => 'PhabricatorAuthController',
|
||||||
'PhabricatorAuthLoginHandler' => 'Phobject',
|
|
||||||
'PhabricatorAuthLoginMessageType' => 'PhabricatorAuthMessageType',
|
'PhabricatorAuthLoginMessageType' => 'PhabricatorAuthMessageType',
|
||||||
'PhabricatorAuthLogoutConduitAPIMethod' => 'PhabricatorAuthConduitAPIMethod',
|
'PhabricatorAuthLogoutConduitAPIMethod' => 'PhabricatorAuthConduitAPIMethod',
|
||||||
'PhabricatorAuthMFAEditEngineExtension' => 'PhabricatorEditEngineExtension',
|
'PhabricatorAuthMFAEditEngineExtension' => 'PhabricatorEditEngineExtension',
|
||||||
@@ -8102,6 +8232,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorAuthProviderConfigTransaction' => 'PhabricatorApplicationTransaction',
|
'PhabricatorAuthProviderConfigTransaction' => 'PhabricatorApplicationTransaction',
|
||||||
'PhabricatorAuthProviderConfigTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'PhabricatorAuthProviderConfigTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
'PhabricatorAuthProviderController' => 'PhabricatorAuthController',
|
'PhabricatorAuthProviderController' => 'PhabricatorAuthController',
|
||||||
|
'PhabricatorAuthProviderViewController' => 'PhabricatorAuthProviderConfigController',
|
||||||
'PhabricatorAuthProvidersGuidanceContext' => 'PhabricatorGuidanceContext',
|
'PhabricatorAuthProvidersGuidanceContext' => 'PhabricatorGuidanceContext',
|
||||||
'PhabricatorAuthProvidersGuidanceEngineExtension' => 'PhabricatorGuidanceEngineExtension',
|
'PhabricatorAuthProvidersGuidanceEngineExtension' => 'PhabricatorGuidanceEngineExtension',
|
||||||
'PhabricatorAuthQueryPublicKeysConduitAPIMethod' => 'PhabricatorAuthConduitAPIMethod',
|
'PhabricatorAuthQueryPublicKeysConduitAPIMethod' => 'PhabricatorAuthConduitAPIMethod',
|
||||||
@@ -8143,6 +8274,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorAuthSessionPHIDType' => 'PhabricatorPHIDType',
|
'PhabricatorAuthSessionPHIDType' => 'PhabricatorPHIDType',
|
||||||
'PhabricatorAuthSessionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'PhabricatorAuthSessionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
'PhabricatorAuthSessionRevoker' => 'PhabricatorAuthRevoker',
|
'PhabricatorAuthSessionRevoker' => 'PhabricatorAuthRevoker',
|
||||||
|
'PhabricatorAuthSetExternalController' => 'PhabricatorAuthController',
|
||||||
'PhabricatorAuthSetPasswordController' => 'PhabricatorAuthController',
|
'PhabricatorAuthSetPasswordController' => 'PhabricatorAuthController',
|
||||||
'PhabricatorAuthSetupCheck' => 'PhabricatorSetupCheck',
|
'PhabricatorAuthSetupCheck' => 'PhabricatorSetupCheck',
|
||||||
'PhabricatorAuthStartController' => 'PhabricatorAuthController',
|
'PhabricatorAuthStartController' => 'PhabricatorAuthController',
|
||||||
@@ -8709,8 +8841,6 @@ phutil_register_library_map(array(
|
|||||||
),
|
),
|
||||||
'PhabricatorDaemonLogEvent' => 'PhabricatorDaemonDAO',
|
'PhabricatorDaemonLogEvent' => 'PhabricatorDaemonDAO',
|
||||||
'PhabricatorDaemonLogEventGarbageCollector' => 'PhabricatorGarbageCollector',
|
'PhabricatorDaemonLogEventGarbageCollector' => 'PhabricatorGarbageCollector',
|
||||||
'PhabricatorDaemonLogEventViewController' => 'PhabricatorDaemonController',
|
|
||||||
'PhabricatorDaemonLogEventsView' => 'AphrontView',
|
|
||||||
'PhabricatorDaemonLogGarbageCollector' => 'PhabricatorGarbageCollector',
|
'PhabricatorDaemonLogGarbageCollector' => 'PhabricatorGarbageCollector',
|
||||||
'PhabricatorDaemonLogListController' => 'PhabricatorDaemonController',
|
'PhabricatorDaemonLogListController' => 'PhabricatorDaemonController',
|
||||||
'PhabricatorDaemonLogListView' => 'AphrontView',
|
'PhabricatorDaemonLogListView' => 'AphrontView',
|
||||||
@@ -8749,6 +8879,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorDashboardApplication' => 'PhabricatorApplication',
|
'PhabricatorDashboardApplication' => 'PhabricatorApplication',
|
||||||
'PhabricatorDashboardArchiveController' => 'PhabricatorDashboardController',
|
'PhabricatorDashboardArchiveController' => 'PhabricatorDashboardController',
|
||||||
'PhabricatorDashboardArrangeController' => 'PhabricatorDashboardProfileController',
|
'PhabricatorDashboardArrangeController' => 'PhabricatorDashboardProfileController',
|
||||||
|
'PhabricatorDashboardConsoleController' => 'PhabricatorDashboardController',
|
||||||
'PhabricatorDashboardController' => 'PhabricatorController',
|
'PhabricatorDashboardController' => 'PhabricatorController',
|
||||||
'PhabricatorDashboardDAO' => 'PhabricatorLiskDAO',
|
'PhabricatorDashboardDAO' => 'PhabricatorLiskDAO',
|
||||||
'PhabricatorDashboardDashboardHasPanelEdgeType' => 'PhabricatorEdgeType',
|
'PhabricatorDashboardDashboardHasPanelEdgeType' => 'PhabricatorEdgeType',
|
||||||
@@ -8799,6 +8930,30 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorDashboardPanelTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'PhabricatorDashboardPanelTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
'PhabricatorDashboardPanelType' => 'Phobject',
|
'PhabricatorDashboardPanelType' => 'Phobject',
|
||||||
'PhabricatorDashboardPanelViewController' => 'PhabricatorDashboardController',
|
'PhabricatorDashboardPanelViewController' => 'PhabricatorDashboardController',
|
||||||
|
'PhabricatorDashboardPortal' => array(
|
||||||
|
'PhabricatorDashboardDAO',
|
||||||
|
'PhabricatorApplicationTransactionInterface',
|
||||||
|
'PhabricatorPolicyInterface',
|
||||||
|
'PhabricatorDestructibleInterface',
|
||||||
|
),
|
||||||
|
'PhabricatorDashboardPortalController' => 'PhabricatorDashboardController',
|
||||||
|
'PhabricatorDashboardPortalEditConduitAPIMethod' => 'PhabricatorEditEngineAPIMethod',
|
||||||
|
'PhabricatorDashboardPortalEditController' => 'PhabricatorDashboardPortalController',
|
||||||
|
'PhabricatorDashboardPortalEditEngine' => 'PhabricatorEditEngine',
|
||||||
|
'PhabricatorDashboardPortalEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||||
|
'PhabricatorDashboardPortalListController' => 'PhabricatorDashboardPortalController',
|
||||||
|
'PhabricatorDashboardPortalMenuItem' => 'PhabricatorProfileMenuItem',
|
||||||
|
'PhabricatorDashboardPortalNameTransaction' => 'PhabricatorDashboardPortalTransactionType',
|
||||||
|
'PhabricatorDashboardPortalPHIDType' => 'PhabricatorPHIDType',
|
||||||
|
'PhabricatorDashboardPortalProfileMenuEngine' => 'PhabricatorProfileMenuEngine',
|
||||||
|
'PhabricatorDashboardPortalQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
|
'PhabricatorDashboardPortalSearchConduitAPIMethod' => 'PhabricatorSearchEngineAPIMethod',
|
||||||
|
'PhabricatorDashboardPortalSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
|
'PhabricatorDashboardPortalStatus' => 'Phobject',
|
||||||
|
'PhabricatorDashboardPortalTransaction' => 'PhabricatorModularTransaction',
|
||||||
|
'PhabricatorDashboardPortalTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
|
'PhabricatorDashboardPortalTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
|
'PhabricatorDashboardPortalViewController' => 'PhabricatorDashboardPortalController',
|
||||||
'PhabricatorDashboardProfileController' => 'PhabricatorController',
|
'PhabricatorDashboardProfileController' => 'PhabricatorController',
|
||||||
'PhabricatorDashboardProfileMenuItem' => 'PhabricatorProfileMenuItem',
|
'PhabricatorDashboardProfileMenuItem' => 'PhabricatorProfileMenuItem',
|
||||||
'PhabricatorDashboardQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'PhabricatorDashboardQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
@@ -8830,6 +8985,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorDebugController' => 'PhabricatorController',
|
'PhabricatorDebugController' => 'PhabricatorController',
|
||||||
'PhabricatorDefaultRequestExceptionHandler' => 'PhabricatorRequestExceptionHandler',
|
'PhabricatorDefaultRequestExceptionHandler' => 'PhabricatorRequestExceptionHandler',
|
||||||
'PhabricatorDefaultSyntaxStyle' => 'PhabricatorSyntaxStyle',
|
'PhabricatorDefaultSyntaxStyle' => 'PhabricatorSyntaxStyle',
|
||||||
|
'PhabricatorDefaultUnlockEngine' => 'PhabricatorUnlockEngine',
|
||||||
'PhabricatorDestructibleCodex' => 'Phobject',
|
'PhabricatorDestructibleCodex' => 'Phobject',
|
||||||
'PhabricatorDestructionEngine' => 'Phobject',
|
'PhabricatorDestructionEngine' => 'Phobject',
|
||||||
'PhabricatorDestructionEngineExtension' => 'Phobject',
|
'PhabricatorDestructionEngineExtension' => 'Phobject',
|
||||||
@@ -8838,6 +8994,8 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorDeveloperPreferencesSettingsPanel' => 'PhabricatorEditEngineSettingsPanel',
|
'PhabricatorDeveloperPreferencesSettingsPanel' => 'PhabricatorEditEngineSettingsPanel',
|
||||||
'PhabricatorDiffInlineCommentQuery' => 'PhabricatorApplicationTransactionCommentQuery',
|
'PhabricatorDiffInlineCommentQuery' => 'PhabricatorApplicationTransactionCommentQuery',
|
||||||
'PhabricatorDiffPreferencesSettingsPanel' => 'PhabricatorEditEngineSettingsPanel',
|
'PhabricatorDiffPreferencesSettingsPanel' => 'PhabricatorEditEngineSettingsPanel',
|
||||||
|
'PhabricatorDiffScopeEngine' => 'Phobject',
|
||||||
|
'PhabricatorDiffScopeEngineTestCase' => 'PhabricatorTestCase',
|
||||||
'PhabricatorDifferenceEngine' => 'Phobject',
|
'PhabricatorDifferenceEngine' => 'Phobject',
|
||||||
'PhabricatorDifferentialApplication' => 'PhabricatorApplication',
|
'PhabricatorDifferentialApplication' => 'PhabricatorApplication',
|
||||||
'PhabricatorDifferentialAttachCommitWorkflow' => 'PhabricatorDifferentialManagementWorkflow',
|
'PhabricatorDifferentialAttachCommitWorkflow' => 'PhabricatorDifferentialManagementWorkflow',
|
||||||
@@ -9288,6 +9446,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorInternationalizationManagementExtractWorkflow' => 'PhabricatorInternationalizationManagementWorkflow',
|
'PhabricatorInternationalizationManagementExtractWorkflow' => 'PhabricatorInternationalizationManagementWorkflow',
|
||||||
'PhabricatorInternationalizationManagementWorkflow' => 'PhabricatorManagementWorkflow',
|
'PhabricatorInternationalizationManagementWorkflow' => 'PhabricatorManagementWorkflow',
|
||||||
'PhabricatorInvalidConfigSetupCheck' => 'PhabricatorSetupCheck',
|
'PhabricatorInvalidConfigSetupCheck' => 'PhabricatorSetupCheck',
|
||||||
|
'PhabricatorInvalidQueryCursorException' => 'Exception',
|
||||||
'PhabricatorIteratedMD5PasswordHasher' => 'PhabricatorPasswordHasher',
|
'PhabricatorIteratedMD5PasswordHasher' => 'PhabricatorPasswordHasher',
|
||||||
'PhabricatorIteratedMD5PasswordHasherTestCase' => 'PhabricatorTestCase',
|
'PhabricatorIteratedMD5PasswordHasherTestCase' => 'PhabricatorTestCase',
|
||||||
'PhabricatorIteratorFileUploadSource' => 'PhabricatorFileUploadSource',
|
'PhabricatorIteratorFileUploadSource' => 'PhabricatorFileUploadSource',
|
||||||
@@ -9360,6 +9519,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorMacroTransactionType' => 'PhabricatorModularTransactionType',
|
'PhabricatorMacroTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
'PhabricatorMacroViewController' => 'PhabricatorMacroController',
|
'PhabricatorMacroViewController' => 'PhabricatorMacroController',
|
||||||
'PhabricatorMailAdapter' => 'Phobject',
|
'PhabricatorMailAdapter' => 'Phobject',
|
||||||
|
'PhabricatorMailAdapterTestCase' => 'PhabricatorTestCase',
|
||||||
'PhabricatorMailAmazonSESAdapter' => 'PhabricatorMailAdapter',
|
'PhabricatorMailAmazonSESAdapter' => 'PhabricatorMailAdapter',
|
||||||
'PhabricatorMailAmazonSNSAdapter' => 'PhabricatorMailAdapter',
|
'PhabricatorMailAmazonSNSAdapter' => 'PhabricatorMailAdapter',
|
||||||
'PhabricatorMailAttachment' => 'Phobject',
|
'PhabricatorMailAttachment' => 'Phobject',
|
||||||
@@ -9488,6 +9648,8 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorMetaMTASchemaSpec' => 'PhabricatorConfigSchemaSpec',
|
'PhabricatorMetaMTASchemaSpec' => 'PhabricatorConfigSchemaSpec',
|
||||||
'PhabricatorMetaMTASendGridReceiveController' => 'PhabricatorMetaMTAController',
|
'PhabricatorMetaMTASendGridReceiveController' => 'PhabricatorMetaMTAController',
|
||||||
'PhabricatorMetaMTAWorker' => 'PhabricatorWorker',
|
'PhabricatorMetaMTAWorker' => 'PhabricatorWorker',
|
||||||
|
'PhabricatorMetronome' => 'Phobject',
|
||||||
|
'PhabricatorMetronomeTestCase' => 'PhabricatorTestCase',
|
||||||
'PhabricatorMetronomicTriggerClock' => 'PhabricatorTriggerClock',
|
'PhabricatorMetronomicTriggerClock' => 'PhabricatorTriggerClock',
|
||||||
'PhabricatorModularTransaction' => 'PhabricatorApplicationTransaction',
|
'PhabricatorModularTransaction' => 'PhabricatorApplicationTransaction',
|
||||||
'PhabricatorModularTransactionType' => 'Phobject',
|
'PhabricatorModularTransactionType' => 'Phobject',
|
||||||
@@ -9615,10 +9777,12 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorOlderInlinesSetting' => 'PhabricatorSelectSetting',
|
'PhabricatorOlderInlinesSetting' => 'PhabricatorSelectSetting',
|
||||||
'PhabricatorOneTimeTriggerClock' => 'PhabricatorTriggerClock',
|
'PhabricatorOneTimeTriggerClock' => 'PhabricatorTriggerClock',
|
||||||
'PhabricatorOpcodeCacheSpec' => 'PhabricatorCacheSpec',
|
'PhabricatorOpcodeCacheSpec' => 'PhabricatorCacheSpec',
|
||||||
|
'PhabricatorOptionExportField' => 'PhabricatorExportField',
|
||||||
'PhabricatorOptionGroupSetting' => 'PhabricatorSetting',
|
'PhabricatorOptionGroupSetting' => 'PhabricatorSetting',
|
||||||
'PhabricatorOwnerPathQuery' => 'Phobject',
|
'PhabricatorOwnerPathQuery' => 'Phobject',
|
||||||
'PhabricatorOwnersApplication' => 'PhabricatorApplication',
|
'PhabricatorOwnersApplication' => 'PhabricatorApplication',
|
||||||
'PhabricatorOwnersArchiveController' => 'PhabricatorOwnersController',
|
'PhabricatorOwnersArchiveController' => 'PhabricatorOwnersController',
|
||||||
|
'PhabricatorOwnersAuditRule' => 'Phobject',
|
||||||
'PhabricatorOwnersConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
'PhabricatorOwnersConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
'PhabricatorOwnersConfiguredCustomField' => array(
|
'PhabricatorOwnersConfiguredCustomField' => array(
|
||||||
'PhabricatorOwnersCustomField',
|
'PhabricatorOwnersCustomField',
|
||||||
@@ -9869,7 +10033,6 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorPeopleInviteController' => 'PhabricatorPeopleController',
|
'PhabricatorPeopleInviteController' => 'PhabricatorPeopleController',
|
||||||
'PhabricatorPeopleInviteListController' => 'PhabricatorPeopleInviteController',
|
'PhabricatorPeopleInviteListController' => 'PhabricatorPeopleInviteController',
|
||||||
'PhabricatorPeopleInviteSendController' => 'PhabricatorPeopleInviteController',
|
'PhabricatorPeopleInviteSendController' => 'PhabricatorPeopleInviteController',
|
||||||
'PhabricatorPeopleLdapController' => 'PhabricatorPeopleController',
|
|
||||||
'PhabricatorPeopleListController' => 'PhabricatorPeopleController',
|
'PhabricatorPeopleListController' => 'PhabricatorPeopleController',
|
||||||
'PhabricatorPeopleLogQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'PhabricatorPeopleLogQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
'PhabricatorPeopleLogSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
'PhabricatorPeopleLogSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
@@ -9902,6 +10065,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorPeopleTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'PhabricatorPeopleTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
'PhabricatorPeopleUserFunctionDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
|
'PhabricatorPeopleUserFunctionDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
|
||||||
'PhabricatorPeopleUserPHIDType' => 'PhabricatorPHIDType',
|
'PhabricatorPeopleUserPHIDType' => 'PhabricatorPHIDType',
|
||||||
|
'PhabricatorPeopleUsernameMailEngine' => 'PhabricatorPeopleMailEngine',
|
||||||
'PhabricatorPeopleWelcomeController' => 'PhabricatorPeopleController',
|
'PhabricatorPeopleWelcomeController' => 'PhabricatorPeopleController',
|
||||||
'PhabricatorPeopleWelcomeMailEngine' => 'PhabricatorPeopleMailEngine',
|
'PhabricatorPeopleWelcomeMailEngine' => 'PhabricatorPeopleMailEngine',
|
||||||
'PhabricatorPhabricatorAuthProvider' => 'PhabricatorOAuth2AuthProvider',
|
'PhabricatorPhabricatorAuthProvider' => 'PhabricatorOAuth2AuthProvider',
|
||||||
@@ -10035,6 +10199,8 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorProfileMenuItemConfigurationTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'PhabricatorProfileMenuItemConfigurationTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
'PhabricatorProfileMenuItemIconSet' => 'PhabricatorIconSet',
|
'PhabricatorProfileMenuItemIconSet' => 'PhabricatorIconSet',
|
||||||
'PhabricatorProfileMenuItemPHIDType' => 'PhabricatorPHIDType',
|
'PhabricatorProfileMenuItemPHIDType' => 'PhabricatorPHIDType',
|
||||||
|
'PhabricatorProfileMenuItemView' => 'Phobject',
|
||||||
|
'PhabricatorProfileMenuItemViewList' => 'Phobject',
|
||||||
'PhabricatorProject' => array(
|
'PhabricatorProject' => array(
|
||||||
'PhabricatorProjectDAO',
|
'PhabricatorProjectDAO',
|
||||||
'PhabricatorApplicationTransactionInterface',
|
'PhabricatorApplicationTransactionInterface',
|
||||||
@@ -10072,20 +10238,36 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorExtendedPolicyInterface',
|
'PhabricatorExtendedPolicyInterface',
|
||||||
'PhabricatorConduitResultInterface',
|
'PhabricatorConduitResultInterface',
|
||||||
),
|
),
|
||||||
|
'PhabricatorProjectColumnAuthorOrder' => 'PhabricatorProjectColumnOrder',
|
||||||
|
'PhabricatorProjectColumnCreatedOrder' => 'PhabricatorProjectColumnOrder',
|
||||||
'PhabricatorProjectColumnDetailController' => 'PhabricatorProjectBoardController',
|
'PhabricatorProjectColumnDetailController' => 'PhabricatorProjectBoardController',
|
||||||
'PhabricatorProjectColumnEditController' => 'PhabricatorProjectBoardController',
|
'PhabricatorProjectColumnEditController' => 'PhabricatorProjectBoardController',
|
||||||
|
'PhabricatorProjectColumnHeader' => 'Phobject',
|
||||||
'PhabricatorProjectColumnHideController' => 'PhabricatorProjectBoardController',
|
'PhabricatorProjectColumnHideController' => 'PhabricatorProjectBoardController',
|
||||||
|
'PhabricatorProjectColumnLimitTransaction' => 'PhabricatorProjectColumnTransactionType',
|
||||||
|
'PhabricatorProjectColumnNameTransaction' => 'PhabricatorProjectColumnTransactionType',
|
||||||
|
'PhabricatorProjectColumnNaturalOrder' => 'PhabricatorProjectColumnOrder',
|
||||||
|
'PhabricatorProjectColumnOrder' => 'Phobject',
|
||||||
|
'PhabricatorProjectColumnOwnerOrder' => 'PhabricatorProjectColumnOrder',
|
||||||
'PhabricatorProjectColumnPHIDType' => 'PhabricatorPHIDType',
|
'PhabricatorProjectColumnPHIDType' => 'PhabricatorPHIDType',
|
||||||
|
'PhabricatorProjectColumnPointsOrder' => 'PhabricatorProjectColumnOrder',
|
||||||
'PhabricatorProjectColumnPosition' => array(
|
'PhabricatorProjectColumnPosition' => array(
|
||||||
'PhabricatorProjectDAO',
|
'PhabricatorProjectDAO',
|
||||||
'PhabricatorPolicyInterface',
|
'PhabricatorPolicyInterface',
|
||||||
),
|
),
|
||||||
'PhabricatorProjectColumnPositionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'PhabricatorProjectColumnPositionQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
|
'PhabricatorProjectColumnPriorityOrder' => 'PhabricatorProjectColumnOrder',
|
||||||
'PhabricatorProjectColumnQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
'PhabricatorProjectColumnQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
|
'PhabricatorProjectColumnRemoveTriggerController' => 'PhabricatorProjectBoardController',
|
||||||
'PhabricatorProjectColumnSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
'PhabricatorProjectColumnSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
'PhabricatorProjectColumnTransaction' => 'PhabricatorApplicationTransaction',
|
'PhabricatorProjectColumnStatusOrder' => 'PhabricatorProjectColumnOrder',
|
||||||
|
'PhabricatorProjectColumnStatusTransaction' => 'PhabricatorProjectColumnTransactionType',
|
||||||
|
'PhabricatorProjectColumnTitleOrder' => 'PhabricatorProjectColumnOrder',
|
||||||
|
'PhabricatorProjectColumnTransaction' => 'PhabricatorModularTransaction',
|
||||||
'PhabricatorProjectColumnTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
|
'PhabricatorProjectColumnTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||||
'PhabricatorProjectColumnTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'PhabricatorProjectColumnTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
|
'PhabricatorProjectColumnTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
|
'PhabricatorProjectColumnTriggerTransaction' => 'PhabricatorProjectColumnTransactionType',
|
||||||
'PhabricatorProjectConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
'PhabricatorProjectConfigOptions' => 'PhabricatorApplicationConfigOptions',
|
||||||
'PhabricatorProjectConfiguredCustomField' => array(
|
'PhabricatorProjectConfiguredCustomField' => array(
|
||||||
'PhabricatorProjectStandardCustomField',
|
'PhabricatorProjectStandardCustomField',
|
||||||
@@ -10103,6 +10285,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorProjectDefaultController' => 'PhabricatorProjectBoardController',
|
'PhabricatorProjectDefaultController' => 'PhabricatorProjectBoardController',
|
||||||
'PhabricatorProjectDescriptionField' => 'PhabricatorProjectStandardCustomField',
|
'PhabricatorProjectDescriptionField' => 'PhabricatorProjectStandardCustomField',
|
||||||
'PhabricatorProjectDetailsProfileMenuItem' => 'PhabricatorProfileMenuItem',
|
'PhabricatorProjectDetailsProfileMenuItem' => 'PhabricatorProfileMenuItem',
|
||||||
|
'PhabricatorProjectDropEffect' => 'Phobject',
|
||||||
'PhabricatorProjectEditController' => 'PhabricatorProjectController',
|
'PhabricatorProjectEditController' => 'PhabricatorProjectController',
|
||||||
'PhabricatorProjectEditEngine' => 'PhabricatorEditEngine',
|
'PhabricatorProjectEditEngine' => 'PhabricatorEditEngine',
|
||||||
'PhabricatorProjectEditPictureController' => 'PhabricatorProjectController',
|
'PhabricatorProjectEditPictureController' => 'PhabricatorProjectController',
|
||||||
@@ -10183,6 +10366,36 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorProjectTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
|
'PhabricatorProjectTransactionEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||||
'PhabricatorProjectTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
'PhabricatorProjectTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
'PhabricatorProjectTransactionType' => 'PhabricatorModularTransactionType',
|
'PhabricatorProjectTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
|
'PhabricatorProjectTrigger' => array(
|
||||||
|
'PhabricatorProjectDAO',
|
||||||
|
'PhabricatorApplicationTransactionInterface',
|
||||||
|
'PhabricatorPolicyInterface',
|
||||||
|
'PhabricatorIndexableInterface',
|
||||||
|
'PhabricatorDestructibleInterface',
|
||||||
|
),
|
||||||
|
'PhabricatorProjectTriggerController' => 'PhabricatorProjectController',
|
||||||
|
'PhabricatorProjectTriggerCorruptionException' => 'Exception',
|
||||||
|
'PhabricatorProjectTriggerEditController' => 'PhabricatorProjectTriggerController',
|
||||||
|
'PhabricatorProjectTriggerEditor' => 'PhabricatorApplicationTransactionEditor',
|
||||||
|
'PhabricatorProjectTriggerInvalidRule' => 'PhabricatorProjectTriggerRule',
|
||||||
|
'PhabricatorProjectTriggerListController' => 'PhabricatorProjectTriggerController',
|
||||||
|
'PhabricatorProjectTriggerManiphestPriorityRule' => 'PhabricatorProjectTriggerRule',
|
||||||
|
'PhabricatorProjectTriggerManiphestStatusRule' => 'PhabricatorProjectTriggerRule',
|
||||||
|
'PhabricatorProjectTriggerNameTransaction' => 'PhabricatorProjectTriggerTransactionType',
|
||||||
|
'PhabricatorProjectTriggerPHIDType' => 'PhabricatorPHIDType',
|
||||||
|
'PhabricatorProjectTriggerPlaySoundRule' => 'PhabricatorProjectTriggerRule',
|
||||||
|
'PhabricatorProjectTriggerQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
|
||||||
|
'PhabricatorProjectTriggerRule' => 'Phobject',
|
||||||
|
'PhabricatorProjectTriggerRuleRecord' => 'Phobject',
|
||||||
|
'PhabricatorProjectTriggerRulesetTransaction' => 'PhabricatorProjectTriggerTransactionType',
|
||||||
|
'PhabricatorProjectTriggerSearchEngine' => 'PhabricatorApplicationSearchEngine',
|
||||||
|
'PhabricatorProjectTriggerTransaction' => 'PhabricatorModularTransaction',
|
||||||
|
'PhabricatorProjectTriggerTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
|
||||||
|
'PhabricatorProjectTriggerTransactionType' => 'PhabricatorModularTransactionType',
|
||||||
|
'PhabricatorProjectTriggerUnknownRule' => 'PhabricatorProjectTriggerRule',
|
||||||
|
'PhabricatorProjectTriggerUsage' => 'PhabricatorProjectDAO',
|
||||||
|
'PhabricatorProjectTriggerUsageIndexEngineExtension' => 'PhabricatorIndexEngineExtension',
|
||||||
|
'PhabricatorProjectTriggerViewController' => 'PhabricatorProjectTriggerController',
|
||||||
'PhabricatorProjectTypeTransaction' => 'PhabricatorProjectTransactionType',
|
'PhabricatorProjectTypeTransaction' => 'PhabricatorProjectTransactionType',
|
||||||
'PhabricatorProjectUIEventListener' => 'PhabricatorEventListener',
|
'PhabricatorProjectUIEventListener' => 'PhabricatorEventListener',
|
||||||
'PhabricatorProjectUpdateController' => 'PhabricatorProjectController',
|
'PhabricatorProjectUpdateController' => 'PhabricatorProjectController',
|
||||||
@@ -10214,6 +10427,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorPygmentSetupCheck' => 'PhabricatorSetupCheck',
|
'PhabricatorPygmentSetupCheck' => 'PhabricatorSetupCheck',
|
||||||
'PhabricatorQuery' => 'Phobject',
|
'PhabricatorQuery' => 'Phobject',
|
||||||
'PhabricatorQueryConstraint' => 'Phobject',
|
'PhabricatorQueryConstraint' => 'Phobject',
|
||||||
|
'PhabricatorQueryCursor' => 'Phobject',
|
||||||
'PhabricatorQueryIterator' => 'PhutilBufferedIterator',
|
'PhabricatorQueryIterator' => 'PhutilBufferedIterator',
|
||||||
'PhabricatorQueryOrderItem' => 'Phobject',
|
'PhabricatorQueryOrderItem' => 'Phobject',
|
||||||
'PhabricatorQueryOrderTestCase' => 'PhabricatorTestCase',
|
'PhabricatorQueryOrderTestCase' => 'PhabricatorTestCase',
|
||||||
@@ -10836,6 +11050,7 @@ phutil_register_library_map(array(
|
|||||||
'PhabricatorUnitTestContentSource' => 'PhabricatorContentSource',
|
'PhabricatorUnitTestContentSource' => 'PhabricatorContentSource',
|
||||||
'PhabricatorUnitsTestCase' => 'PhabricatorTestCase',
|
'PhabricatorUnitsTestCase' => 'PhabricatorTestCase',
|
||||||
'PhabricatorUnknownContentSource' => 'PhabricatorContentSource',
|
'PhabricatorUnknownContentSource' => 'PhabricatorContentSource',
|
||||||
|
'PhabricatorUnlockEngine' => 'Phobject',
|
||||||
'PhabricatorUnsubscribedFromObjectEdgeType' => 'PhabricatorEdgeType',
|
'PhabricatorUnsubscribedFromObjectEdgeType' => 'PhabricatorEdgeType',
|
||||||
'PhabricatorUser' => array(
|
'PhabricatorUser' => array(
|
||||||
'PhabricatorUserDAO',
|
'PhabricatorUserDAO',
|
||||||
@@ -11232,6 +11447,7 @@ phutil_register_library_map(array(
|
|||||||
'PhortuneAccountViewController' => 'PhortuneAccountProfileController',
|
'PhortuneAccountViewController' => 'PhortuneAccountProfileController',
|
||||||
'PhortuneAdHocCart' => 'PhortuneCartImplementation',
|
'PhortuneAdHocCart' => 'PhortuneCartImplementation',
|
||||||
'PhortuneAdHocProduct' => 'PhortuneProductImplementation',
|
'PhortuneAdHocProduct' => 'PhortuneProductImplementation',
|
||||||
|
'PhortuneAddPaymentMethodAction' => 'PhabricatorSystemAction',
|
||||||
'PhortuneCart' => array(
|
'PhortuneCart' => array(
|
||||||
'PhortuneDAO',
|
'PhortuneDAO',
|
||||||
'PhabricatorApplicationTransactionInterface',
|
'PhabricatorApplicationTransactionInterface',
|
||||||
@@ -11267,6 +11483,7 @@ phutil_register_library_map(array(
|
|||||||
'PhortuneCurrencySerializer' => 'PhabricatorLiskSerializer',
|
'PhortuneCurrencySerializer' => 'PhabricatorLiskSerializer',
|
||||||
'PhortuneCurrencyTestCase' => 'PhabricatorTestCase',
|
'PhortuneCurrencyTestCase' => 'PhabricatorTestCase',
|
||||||
'PhortuneDAO' => 'PhabricatorLiskDAO',
|
'PhortuneDAO' => 'PhabricatorLiskDAO',
|
||||||
|
'PhortuneDisplayException' => 'Exception',
|
||||||
'PhortuneErrCode' => 'PhortuneConstants',
|
'PhortuneErrCode' => 'PhortuneConstants',
|
||||||
'PhortuneInvoiceView' => 'AphrontTagView',
|
'PhortuneInvoiceView' => 'AphrontTagView',
|
||||||
'PhortuneLandingController' => 'PhortuneController',
|
'PhortuneLandingController' => 'PhortuneController',
|
||||||
|
|||||||
@@ -591,10 +591,11 @@ final class AphrontRequest extends Phobject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function getRequestURI() {
|
public function getRequestURI() {
|
||||||
$get = $_GET;
|
$uri_path = phutil_escape_uri($this->getPath());
|
||||||
unset($get['__path__']);
|
$uri_query = idx($_SERVER, 'QUERY_STRING', '');
|
||||||
$path = phutil_escape_uri($this->getPath());
|
|
||||||
return id(new PhutilURI($path))->setQueryParams($get);
|
return id(new PhutilURI($uri_path.'?'.$uri_query))
|
||||||
|
->removeQueryParam('__path__');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAbsoluteRequestURI() {
|
public function getAbsoluteRequestURI() {
|
||||||
@@ -824,7 +825,10 @@ final class AphrontRequest extends Phobject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$uri->setPath($this->getPath());
|
$uri->setPath($this->getPath());
|
||||||
$uri->setQueryParams(self::flattenData($_GET));
|
$uri->removeAllQueryParams();
|
||||||
|
foreach (self::flattenData($_GET) as $query_key => $query_value) {
|
||||||
|
$uri->appendQueryParam($query_key, $query_value);
|
||||||
|
}
|
||||||
|
|
||||||
$input = PhabricatorStartup::getRawInput();
|
$input = PhabricatorStartup::getRawInput();
|
||||||
|
|
||||||
|
|||||||
@@ -118,6 +118,12 @@ final class AphrontApplicationConfiguration
|
|||||||
$database_exception = $ex;
|
$database_exception = $ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we're in developer mode, set a flag so that top-level exception
|
||||||
|
// handlers can add more information.
|
||||||
|
if (PhabricatorEnv::getEnvConfig('phabricator.developer-mode')) {
|
||||||
|
$sink->setShowStackTraces(true);
|
||||||
|
}
|
||||||
|
|
||||||
if ($database_exception) {
|
if ($database_exception) {
|
||||||
$issue = PhabricatorSetupIssue::newDatabaseConnectionIssue(
|
$issue = PhabricatorSetupIssue::newDatabaseConnectionIssue(
|
||||||
$database_exception,
|
$database_exception,
|
||||||
@@ -282,23 +288,69 @@ final class AphrontApplicationConfiguration
|
|||||||
}
|
}
|
||||||
} catch (Exception $ex) {
|
} catch (Exception $ex) {
|
||||||
$original_exception = $ex;
|
$original_exception = $ex;
|
||||||
$response = $this->handleThrowable($ex);
|
|
||||||
} catch (Throwable $ex) {
|
} catch (Throwable $ex) {
|
||||||
$original_exception = $ex;
|
$original_exception = $ex;
|
||||||
$response = $this->handleThrowable($ex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$response_exception = null;
|
||||||
try {
|
try {
|
||||||
|
if ($original_exception) {
|
||||||
|
$response = $this->handleThrowable($original_exception);
|
||||||
|
}
|
||||||
|
|
||||||
$response = $this->produceResponse($request, $response);
|
$response = $this->produceResponse($request, $response);
|
||||||
$response = $controller->willSendResponse($response);
|
$response = $controller->willSendResponse($response);
|
||||||
$response->setRequest($request);
|
$response->setRequest($request);
|
||||||
|
|
||||||
self::writeResponse($sink, $response);
|
self::writeResponse($sink, $response);
|
||||||
} catch (Exception $ex) {
|
} catch (Exception $ex) {
|
||||||
|
$response_exception = $ex;
|
||||||
|
} catch (Throwable $ex) {
|
||||||
|
$response_exception = $ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($response_exception) {
|
||||||
|
// If we encountered an exception while building a normal response, then
|
||||||
|
// encountered another exception while building a response for the first
|
||||||
|
// exception, just throw the original exception. It is more likely to be
|
||||||
|
// useful and point at a root cause than the second exception we ran into
|
||||||
|
// while telling the user about it.
|
||||||
if ($original_exception) {
|
if ($original_exception) {
|
||||||
throw $original_exception;
|
throw $original_exception;
|
||||||
}
|
}
|
||||||
throw $ex;
|
|
||||||
|
// If we built a response successfully and then ran into an exception
|
||||||
|
// trying to render it, try to handle and present that exception to the
|
||||||
|
// user using the standard handler.
|
||||||
|
|
||||||
|
// The problem here might be in rendering (more common) or in the actual
|
||||||
|
// response mechanism (less common). If it's in rendering, we can likely
|
||||||
|
// still render a nice exception page: the majority of rendering issues
|
||||||
|
// are in main page content, not content shared with the exception page.
|
||||||
|
|
||||||
|
$handling_exception = null;
|
||||||
|
try {
|
||||||
|
$response = $this->handleThrowable($response_exception);
|
||||||
|
|
||||||
|
$response = $this->produceResponse($request, $response);
|
||||||
|
$response = $controller->willSendResponse($response);
|
||||||
|
$response->setRequest($request);
|
||||||
|
|
||||||
|
self::writeResponse($sink, $response);
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
$handling_exception = $ex;
|
||||||
|
} catch (Throwable $ex) {
|
||||||
|
$handling_exception = $ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we didn't have any luck with that, raise the original response
|
||||||
|
// exception. As above, this is the root cause exception and more likely
|
||||||
|
// to be useful. This will go to the fallback error handler at top
|
||||||
|
// level.
|
||||||
|
|
||||||
|
if ($handling_exception) {
|
||||||
|
throw $response_exception;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
@@ -724,7 +776,6 @@ final class AphrontApplicationConfiguration
|
|||||||
'filler' => str_repeat('Q', 1024 * 16),
|
'filler' => str_repeat('Q', 1024 * 16),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
return id(new AphrontJSONResponse())
|
return id(new AphrontJSONResponse())
|
||||||
->setAddJSONShield(false)
|
->setAddJSONShield(false)
|
||||||
->setContent($result);
|
->setContent($result);
|
||||||
|
|||||||
@@ -32,22 +32,21 @@ final class AphrontAjaxResponse extends AphrontResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function buildResponseString() {
|
public function buildResponseString() {
|
||||||
|
$request = $this->getRequest();
|
||||||
$console = $this->getConsole();
|
$console = $this->getConsole();
|
||||||
if ($console) {
|
if ($console) {
|
||||||
// NOTE: We're stripping query parameters here both for readability and
|
// NOTE: We're stripping query parameters here both for readability and
|
||||||
// to mitigate BREACH and similar attacks. The parameters are available
|
// to mitigate BREACH and similar attacks. The parameters are available
|
||||||
// in the "Request" tab, so this should not impact usability. See T3684.
|
// in the "Request" tab, so this should not impact usability. See T3684.
|
||||||
$uri = $this->getRequest()->getRequestURI();
|
$path = $request->getPath();
|
||||||
$uri = new PhutilURI($uri);
|
|
||||||
$uri->setQueryParams(array());
|
|
||||||
|
|
||||||
Javelin::initBehavior(
|
Javelin::initBehavior(
|
||||||
'dark-console',
|
'dark-console',
|
||||||
array(
|
array(
|
||||||
'uri' => (string)$uri,
|
'uri' => $path,
|
||||||
'key' => $console->getKey($this->getRequest()),
|
'key' => $console->getKey($request),
|
||||||
'color' => $console->getColor(),
|
'color' => $console->getColor(),
|
||||||
'quicksand' => $this->getRequest()->isQuicksand(),
|
'quicksand' => $request->isQuicksand(),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +59,6 @@ final class AphrontAjaxResponse extends AphrontResponse {
|
|||||||
|
|
||||||
$response = CelerityAPI::getStaticResourceResponse();
|
$response = CelerityAPI::getStaticResourceResponse();
|
||||||
|
|
||||||
$request = $this->getRequest();
|
|
||||||
if ($request) {
|
if ($request) {
|
||||||
$viewer = $request->getViewer();
|
$viewer = $request->getViewer();
|
||||||
if ($viewer) {
|
if ($viewer) {
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ abstract class AphrontResponse extends Phobject {
|
|||||||
$uri = id(new PhutilURI($uri))
|
$uri = id(new PhutilURI($uri))
|
||||||
->setPath(null)
|
->setPath(null)
|
||||||
->setFragment(null)
|
->setFragment(null)
|
||||||
->setQueryParams(array());
|
->removeAllQueryParams();
|
||||||
|
|
||||||
$uri = (string)$uri;
|
$uri = (string)$uri;
|
||||||
if (preg_match('/[ ;\']/', $uri)) {
|
if (preg_match('/[ ;\']/', $uri)) {
|
||||||
|
|||||||
@@ -4,8 +4,20 @@ final class AphrontUnhandledExceptionResponse
|
|||||||
extends AphrontStandaloneHTMLResponse {
|
extends AphrontStandaloneHTMLResponse {
|
||||||
|
|
||||||
private $exception;
|
private $exception;
|
||||||
|
private $showStackTraces;
|
||||||
|
|
||||||
|
public function setShowStackTraces($show_stack_traces) {
|
||||||
|
$this->showStackTraces = $show_stack_traces;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShowStackTraces() {
|
||||||
|
return $this->showStackTraces;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setException($exception) {
|
||||||
|
// NOTE: We accept an Exception or a Throwable.
|
||||||
|
|
||||||
public function setException(Exception $exception) {
|
|
||||||
// Log the exception unless it's specifically a silent malformed request
|
// Log the exception unless it's specifically a silent malformed request
|
||||||
// exception.
|
// exception.
|
||||||
|
|
||||||
@@ -61,10 +73,36 @@ final class AphrontUnhandledExceptionResponse
|
|||||||
$body = $ex->getMessage();
|
$body = $ex->getMessage();
|
||||||
$body = phutil_escape_html_newlines($body);
|
$body = phutil_escape_html_newlines($body);
|
||||||
|
|
||||||
|
$classes = array();
|
||||||
|
$classes[] = 'unhandled-exception-detail';
|
||||||
|
|
||||||
|
$stack = null;
|
||||||
|
if ($this->getShowStackTraces()) {
|
||||||
|
try {
|
||||||
|
$stack = id(new AphrontStackTraceView())
|
||||||
|
->setTrace($ex->getTrace());
|
||||||
|
|
||||||
|
$stack = hsprintf('%s', $stack);
|
||||||
|
|
||||||
|
$stack = phutil_tag(
|
||||||
|
'div',
|
||||||
|
array(
|
||||||
|
'class' => 'unhandled-exception-stack',
|
||||||
|
),
|
||||||
|
$stack);
|
||||||
|
|
||||||
|
$classes[] = 'unhandled-exception-with-stack';
|
||||||
|
} catch (Exception $trace_exception) {
|
||||||
|
$stack = null;
|
||||||
|
} catch (Throwable $trace_exception) {
|
||||||
|
$stack = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return phutil_tag(
|
return phutil_tag(
|
||||||
'div',
|
'div',
|
||||||
array(
|
array(
|
||||||
'class' => 'unhandled-exception-detail',
|
'class' => implode(' ', $classes),
|
||||||
),
|
),
|
||||||
array(
|
array(
|
||||||
phutil_tag(
|
phutil_tag(
|
||||||
@@ -79,6 +117,7 @@ final class AphrontUnhandledExceptionResponse
|
|||||||
'class' => 'unhandled-exception-body',
|
'class' => 'unhandled-exception-body',
|
||||||
),
|
),
|
||||||
$body),
|
$body),
|
||||||
|
$stack,
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,14 +5,22 @@
|
|||||||
* Normally this is just @{class:AphrontPHPHTTPSink}, which uses "echo" and
|
* Normally this is just @{class:AphrontPHPHTTPSink}, which uses "echo" and
|
||||||
* "header()" to emit responses.
|
* "header()" to emit responses.
|
||||||
*
|
*
|
||||||
* Mostly, this class allows us to do install security or metrics hooks in the
|
|
||||||
* output pipeline.
|
|
||||||
*
|
|
||||||
* @task write Writing Response Components
|
* @task write Writing Response Components
|
||||||
* @task emit Emitting the Response
|
* @task emit Emitting the Response
|
||||||
*/
|
*/
|
||||||
abstract class AphrontHTTPSink extends Phobject {
|
abstract class AphrontHTTPSink extends Phobject {
|
||||||
|
|
||||||
|
private $showStackTraces = false;
|
||||||
|
|
||||||
|
final public function setShowStackTraces($show_stack_traces) {
|
||||||
|
$this->showStackTraces = $show_stack_traces;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
final public function getShowStackTraces() {
|
||||||
|
return $this->showStackTraces;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -( Writing Response Components )---------------------------------------- */
|
/* -( Writing Response Components )---------------------------------------- */
|
||||||
|
|
||||||
@@ -103,6 +111,17 @@ abstract class AphrontHTTPSink extends Phobject {
|
|||||||
// HTTP headers.
|
// HTTP headers.
|
||||||
$data = $response->getContentIterator();
|
$data = $response->getContentIterator();
|
||||||
|
|
||||||
|
// This isn't an exceptionally clean separation of concerns, but we need
|
||||||
|
// to add CSP headers for all response types (including both web pages
|
||||||
|
// and dialogs) and can't determine the correct CSP until after we render
|
||||||
|
// the page (because page elements like Recaptcha may add CSP rules).
|
||||||
|
$static = CelerityAPI::getStaticResourceResponse();
|
||||||
|
foreach ($static->getContentSecurityPolicyURIMap() as $kind => $uris) {
|
||||||
|
foreach ($uris as $uri) {
|
||||||
|
$response->addContentSecurityPolicyURI($kind, $uri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$all_headers = array_merge(
|
$all_headers = array_merge(
|
||||||
$response->getHeaders(),
|
$response->getHeaders(),
|
||||||
$response->getCacheHeaders());
|
$response->getCacheHeaders());
|
||||||
|
|||||||
@@ -67,19 +67,13 @@ abstract class AlmanacController
|
|||||||
$is_builtin = isset($builtins[$key]);
|
$is_builtin = isset($builtins[$key]);
|
||||||
$is_persistent = (bool)$property->getID();
|
$is_persistent = (bool)$property->getID();
|
||||||
|
|
||||||
$delete_uri = id(new PhutilURI($delete_base))
|
$params = array(
|
||||||
->setQueryParams(
|
'key' => $key,
|
||||||
array(
|
'objectPHID' => $object->getPHID(),
|
||||||
'key' => $key,
|
);
|
||||||
'objectPHID' => $object->getPHID(),
|
|
||||||
));
|
|
||||||
|
|
||||||
$edit_uri = id(new PhutilURI($edit_base))
|
$delete_uri = new PhutilURI($delete_base, $params);
|
||||||
->setQueryParams(
|
$edit_uri = new PhutilURI($edit_base, $params);
|
||||||
array(
|
|
||||||
'key' => $key,
|
|
||||||
'objectPHID' => $object->getPHID(),
|
|
||||||
));
|
|
||||||
|
|
||||||
$delete = javelin_tag(
|
$delete = javelin_tag(
|
||||||
'a',
|
'a',
|
||||||
@@ -143,7 +137,7 @@ abstract class AlmanacController
|
|||||||
|
|
||||||
$phid = $object->getPHID();
|
$phid = $object->getPHID();
|
||||||
$add_uri = id(new PhutilURI($edit_base))
|
$add_uri = id(new PhutilURI($edit_base))
|
||||||
->setQueryParam('objectPHID', $object->getPHID());
|
->replaceQueryParam('objectPHID', $object->getPHID());
|
||||||
|
|
||||||
$can_edit = PhabricatorPolicyFilter::hasCapability(
|
$can_edit = PhabricatorPolicyFilter::hasCapability(
|
||||||
$viewer,
|
$viewer,
|
||||||
|
|||||||
@@ -122,11 +122,10 @@ final class AlmanacDeviceQuery
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getPagingValueMap($cursor, array $keys) {
|
protected function newPagingMapFromPartialObject($object) {
|
||||||
$device = $this->loadCursorObject($cursor);
|
|
||||||
return array(
|
return array(
|
||||||
'id' => $device->getID(),
|
'id' => (int)$object->getID(),
|
||||||
'name' => $device->getName(),
|
'name' => $object->getName(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,16 @@ final class AlmanacInterfaceQuery
|
|||||||
return $interfaces;
|
return $interfaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function buildSelectClauseParts(AphrontDatabaseConnection $conn) {
|
||||||
|
$select = parent::buildSelectClauseParts($conn);
|
||||||
|
|
||||||
|
if ($this->shouldJoinDeviceTable()) {
|
||||||
|
$select[] = qsprintf($conn, 'device.name');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $select;
|
||||||
|
}
|
||||||
|
|
||||||
protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {
|
protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {
|
||||||
$where = parent::buildWhereClauseParts($conn);
|
$where = parent::buildWhereClauseParts($conn);
|
||||||
|
|
||||||
@@ -186,15 +196,16 @@ final class AlmanacInterfaceQuery
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getPagingValueMap($cursor, array $keys) {
|
protected function newPagingMapFromCursorObject(
|
||||||
$interface = $this->loadCursorObject($cursor);
|
PhabricatorQueryCursor $cursor,
|
||||||
|
array $keys) {
|
||||||
|
|
||||||
$map = array(
|
$interface = $cursor->getObject();
|
||||||
'id' => $interface->getID(),
|
|
||||||
'name' => $interface->getDevice()->getName(),
|
return array(
|
||||||
|
'id' => (int)$interface->getID(),
|
||||||
|
'name' => $cursor->getRawRowProperty('device.name'),
|
||||||
);
|
);
|
||||||
|
|
||||||
return $map;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,11 +79,10 @@ final class AlmanacNamespaceQuery
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getPagingValueMap($cursor, array $keys) {
|
protected function newPagingMapFromPartialObject($object) {
|
||||||
$namespace = $this->loadCursorObject($cursor);
|
|
||||||
return array(
|
return array(
|
||||||
'id' => $namespace->getID(),
|
'id' => (int)$object->getID(),
|
||||||
'name' => $namespace->getName(),
|
'name' => $object->getName(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -206,11 +206,10 @@ final class AlmanacServiceQuery
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getPagingValueMap($cursor, array $keys) {
|
protected function newPagingMapFromPartialObject($object) {
|
||||||
$service = $this->loadCursorObject($cursor);
|
|
||||||
return array(
|
return array(
|
||||||
'id' => $service->getID(),
|
'id' => (int)$object->getID(),
|
||||||
'name' => $service->getName(),
|
'name' => $object->getName(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,4 @@ abstract class AlmanacModularTransaction
|
|||||||
return 'almanac';
|
return 'almanac';
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getApplicationTransactionCommentObject() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,10 +105,10 @@ final class PhabricatorAuditManagementDeleteWorkflow
|
|||||||
$query->withPHIDs(mpull($commits, 'getPHID'));
|
$query->withPHIDs(mpull($commits, 'getPHID'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$commits = $query->execute();
|
$commit_iterator = new PhabricatorQueryIterator($query);
|
||||||
$commits = mpull($commits, null, 'getPHID');
|
|
||||||
$audits = array();
|
$audits = array();
|
||||||
foreach ($commits as $commit) {
|
foreach ($commit_iterator as $commit) {
|
||||||
$commit_audits = $commit->getAudits();
|
$commit_audits = $commit->getAudits();
|
||||||
foreach ($commit_audits as $key => $audit) {
|
foreach ($commit_audits as $key => $audit) {
|
||||||
if ($id_map && empty($id_map[$audit->getID()])) {
|
if ($id_map && empty($id_map[$audit->getID()])) {
|
||||||
@@ -131,51 +131,87 @@ final class PhabricatorAuditManagementDeleteWorkflow
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$audits[] = $commit_audits;
|
|
||||||
}
|
|
||||||
$audits = array_mergev($audits);
|
|
||||||
|
|
||||||
$console = PhutilConsole::getConsole();
|
if (!$commit_audits) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!$audits) {
|
$handles = id(new PhabricatorHandleQuery())
|
||||||
$console->writeErr("%s\n", pht('No audits match the query.'));
|
->setViewer($viewer)
|
||||||
return 0;
|
->withPHIDs(mpull($commit_audits, 'getAuditorPHID'))
|
||||||
}
|
->execute();
|
||||||
|
|
||||||
$handles = id(new PhabricatorHandleQuery())
|
foreach ($commit_audits as $audit) {
|
||||||
->setViewer($this->getViewer())
|
$audit_id = $audit->getID();
|
||||||
->withPHIDs(mpull($audits, 'getAuditorPHID'))
|
|
||||||
->execute();
|
|
||||||
|
|
||||||
|
$description = sprintf(
|
||||||
foreach ($audits as $audit) {
|
|
||||||
$commit = $commits[$audit->getCommitPHID()];
|
|
||||||
|
|
||||||
$console->writeOut(
|
|
||||||
"%s\n",
|
|
||||||
sprintf(
|
|
||||||
'%10d %-16s %-16s %s: %s',
|
'%10d %-16s %-16s %s: %s',
|
||||||
$audit->getID(),
|
$audit_id,
|
||||||
$handles[$audit->getAuditorPHID()]->getName(),
|
$handles[$audit->getAuditorPHID()]->getName(),
|
||||||
PhabricatorAuditStatusConstants::getStatusName(
|
PhabricatorAuditStatusConstants::getStatusName(
|
||||||
$audit->getAuditStatus()),
|
$audit->getAuditStatus()),
|
||||||
$commit->getRepository()->formatCommitName(
|
$commit->getRepository()->formatCommitName(
|
||||||
$commit->getCommitIdentifier()),
|
$commit->getCommitIdentifier()),
|
||||||
trim($commit->getSummary())));
|
trim($commit->getSummary()));
|
||||||
|
|
||||||
|
$audits[] = array(
|
||||||
|
'auditID' => $audit_id,
|
||||||
|
'commitPHID' => $commit->getPHID(),
|
||||||
|
'description' => $description,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$is_dry_run) {
|
if (!$audits) {
|
||||||
$message = pht(
|
echo tsprintf(
|
||||||
'Really delete these %d audit(s)? They will be permanently deleted '.
|
"%s\n",
|
||||||
'and can not be recovered.',
|
pht('No audits match the query.'));
|
||||||
count($audits));
|
return 0;
|
||||||
if ($console->confirm($message)) {
|
}
|
||||||
foreach ($audits as $audit) {
|
|
||||||
$id = $audit->getID();
|
foreach ($audits as $audit_spec) {
|
||||||
$console->writeOut("%s\n", pht('Deleting audit %d...', $id));
|
echo tsprintf(
|
||||||
$audit->delete();
|
"%s\n",
|
||||||
}
|
$audit_spec['description']);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($is_dry_run) {
|
||||||
|
echo tsprintf(
|
||||||
|
"%s\n",
|
||||||
|
pht('This is a dry run, so no changes will be made.'));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
$message = pht(
|
||||||
|
'Really delete these %s audit(s)? They will be permanently deleted '.
|
||||||
|
'and can not be recovered.',
|
||||||
|
phutil_count($audits));
|
||||||
|
if (!phutil_console_confirm($message)) {
|
||||||
|
echo tsprintf(
|
||||||
|
"%s\n",
|
||||||
|
pht('User aborted the workflow.'));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$audits_by_commit = igroup($audits, 'commitPHID');
|
||||||
|
foreach ($audits_by_commit as $commit_phid => $audit_specs) {
|
||||||
|
$audit_ids = ipull($audit_specs, 'auditID');
|
||||||
|
|
||||||
|
$audits = id(new PhabricatorRepositoryAuditRequest())->loadAllWhere(
|
||||||
|
'id IN (%Ld)',
|
||||||
|
$audit_ids);
|
||||||
|
|
||||||
|
foreach ($audits as $audit) {
|
||||||
|
$id = $audit->getID();
|
||||||
|
|
||||||
|
echo tsprintf(
|
||||||
|
"%s\n",
|
||||||
|
pht('Deleting audit %d...', $id));
|
||||||
|
|
||||||
|
$audit->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->synchronizeCommitAuditState($commit_phid);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -87,4 +87,39 @@ abstract class PhabricatorAuditManagementWorkflow
|
|||||||
return $commits;
|
return $commits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function synchronizeCommitAuditState($commit_phid) {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
|
$commit = id(new DiffusionCommitQuery())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->withPHIDs(array($commit_phid))
|
||||||
|
->needAuditRequests(true)
|
||||||
|
->executeOne();
|
||||||
|
if (!$commit) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$old_status = $commit->getAuditStatusObject();
|
||||||
|
$commit->updateAuditStatus($commit->getAudits());
|
||||||
|
$new_status = $commit->getAuditStatusObject();
|
||||||
|
|
||||||
|
if ($old_status->getKey() == $new_status->getKey()) {
|
||||||
|
echo tsprintf(
|
||||||
|
"%s\n",
|
||||||
|
pht(
|
||||||
|
'No synchronization changes for "%s".',
|
||||||
|
$commit->getDisplayName()));
|
||||||
|
} else {
|
||||||
|
echo tsprintf(
|
||||||
|
"%s\n",
|
||||||
|
pht(
|
||||||
|
'Synchronizing "%s": "%s" -> "%s".',
|
||||||
|
$commit->getDisplayName(),
|
||||||
|
$old_status->getName(),
|
||||||
|
$new_status->getName()));
|
||||||
|
|
||||||
|
$commit->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,16 @@ final class PhabricatorAuditSynchronizeManagementWorkflow
|
|||||||
protected function didConstruct() {
|
protected function didConstruct() {
|
||||||
$this
|
$this
|
||||||
->setName('synchronize')
|
->setName('synchronize')
|
||||||
->setExamples('**synchronize** ...')
|
->setExamples(
|
||||||
->setSynopsis(pht('Update audit status for commits.'))
|
"**synchronize** __repository__ ...\n".
|
||||||
|
"**synchronize** __commit__ ...\n".
|
||||||
|
"**synchronize** --all")
|
||||||
|
->setSynopsis(
|
||||||
|
pht(
|
||||||
|
'Update commits to make their summary audit state reflect the '.
|
||||||
|
'state of their actual audit requests. This can fix inconsistencies '.
|
||||||
|
'in database state if audit requests have been mangled '.
|
||||||
|
'accidentally (or on purpose).'))
|
||||||
->setArguments(
|
->setArguments(
|
||||||
array_merge(
|
array_merge(
|
||||||
$this->getCommitConstraintArguments(),
|
$this->getCommitConstraintArguments(),
|
||||||
@@ -21,36 +29,7 @@ final class PhabricatorAuditSynchronizeManagementWorkflow
|
|||||||
foreach ($objects as $object) {
|
foreach ($objects as $object) {
|
||||||
$commits = $this->loadCommitsForConstraintObject($object);
|
$commits = $this->loadCommitsForConstraintObject($object);
|
||||||
foreach ($commits as $commit) {
|
foreach ($commits as $commit) {
|
||||||
$commit = id(new DiffusionCommitQuery())
|
$this->synchronizeCommitAuditState($commit->getPHID());
|
||||||
->setViewer($viewer)
|
|
||||||
->withPHIDs(array($commit->getPHID()))
|
|
||||||
->needAuditRequests(true)
|
|
||||||
->executeOne();
|
|
||||||
if (!$commit) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
$old_status = $commit->getAuditStatusObject();
|
|
||||||
$commit->updateAuditStatus($commit->getAudits());
|
|
||||||
$new_status = $commit->getAuditStatusObject();
|
|
||||||
|
|
||||||
if ($old_status->getKey() == $new_status->getKey()) {
|
|
||||||
echo tsprintf(
|
|
||||||
"%s\n",
|
|
||||||
pht(
|
|
||||||
'No changes for "%s".',
|
|
||||||
$commit->getDisplayName()));
|
|
||||||
} else {
|
|
||||||
echo tsprintf(
|
|
||||||
"%s\n",
|
|
||||||
pht(
|
|
||||||
'Updating "%s": "%s" -> "%s".',
|
|
||||||
$commit->getDisplayName(),
|
|
||||||
$old_status->getName(),
|
|
||||||
$new_status->getName()));
|
|
||||||
|
|
||||||
$commit->save();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,10 +48,10 @@ final class PhabricatorAuthApplication extends PhabricatorApplication {
|
|||||||
'' => 'PhabricatorAuthListController',
|
'' => 'PhabricatorAuthListController',
|
||||||
'config/' => array(
|
'config/' => array(
|
||||||
'new/' => 'PhabricatorAuthNewController',
|
'new/' => 'PhabricatorAuthNewController',
|
||||||
'new/(?P<className>[^/]+)/' => 'PhabricatorAuthEditController',
|
'edit/(?:(?P<id>\d+)/)?' => 'PhabricatorAuthEditController',
|
||||||
'edit/(?P<id>\d+)/' => 'PhabricatorAuthEditController',
|
|
||||||
'(?P<action>enable|disable)/(?P<id>\d+)/'
|
'(?P<action>enable|disable)/(?P<id>\d+)/'
|
||||||
=> 'PhabricatorAuthDisableController',
|
=> 'PhabricatorAuthDisableController',
|
||||||
|
'view/(?P<id>\d+)/' => 'PhabricatorAuthProviderViewController',
|
||||||
),
|
),
|
||||||
'login/(?P<pkey>[^/]+)/(?:(?P<extra>[^/]+)/)?'
|
'login/(?P<pkey>[^/]+)/(?:(?P<extra>[^/]+)/)?'
|
||||||
=> 'PhabricatorAuthLoginController',
|
=> 'PhabricatorAuthLoginController',
|
||||||
@@ -61,8 +61,8 @@ final class PhabricatorAuthApplication extends PhabricatorApplication {
|
|||||||
'start/' => 'PhabricatorAuthStartController',
|
'start/' => 'PhabricatorAuthStartController',
|
||||||
'validate/' => 'PhabricatorAuthValidateController',
|
'validate/' => 'PhabricatorAuthValidateController',
|
||||||
'finish/' => 'PhabricatorAuthFinishController',
|
'finish/' => 'PhabricatorAuthFinishController',
|
||||||
'unlink/(?P<pkey>[^/]+)/' => 'PhabricatorAuthUnlinkController',
|
'unlink/(?P<id>\d+)/' => 'PhabricatorAuthUnlinkController',
|
||||||
'(?P<action>link|refresh)/(?P<pkey>[^/]+)/'
|
'(?P<action>link|refresh)/(?P<id>\d+)/'
|
||||||
=> 'PhabricatorAuthLinkController',
|
=> 'PhabricatorAuthLinkController',
|
||||||
'confirmlink/(?P<akey>[^/]+)/'
|
'confirmlink/(?P<akey>[^/]+)/'
|
||||||
=> 'PhabricatorAuthConfirmLinkController',
|
=> 'PhabricatorAuthConfirmLinkController',
|
||||||
@@ -86,7 +86,9 @@ final class PhabricatorAuthApplication extends PhabricatorApplication {
|
|||||||
=> 'PhabricatorAuthSSHKeyRevokeController',
|
=> 'PhabricatorAuthSSHKeyRevokeController',
|
||||||
'view/(?P<id>\d+)/' => 'PhabricatorAuthSSHKeyViewController',
|
'view/(?P<id>\d+)/' => 'PhabricatorAuthSSHKeyViewController',
|
||||||
),
|
),
|
||||||
|
|
||||||
'password/' => 'PhabricatorAuthSetPasswordController',
|
'password/' => 'PhabricatorAuthSetPasswordController',
|
||||||
|
'external/' => 'PhabricatorAuthSetExternalController',
|
||||||
|
|
||||||
'mfa/' => array(
|
'mfa/' => array(
|
||||||
$this->getQueryRoutePattern() =>
|
$this->getQueryRoutePattern() =>
|
||||||
@@ -97,6 +99,8 @@ final class PhabricatorAuthApplication extends PhabricatorApplication {
|
|||||||
'PhabricatorAuthFactorProviderViewController',
|
'PhabricatorAuthFactorProviderViewController',
|
||||||
'message/(?P<id>[1-9]\d*)/' =>
|
'message/(?P<id>[1-9]\d*)/' =>
|
||||||
'PhabricatorAuthFactorProviderMessageController',
|
'PhabricatorAuthFactorProviderMessageController',
|
||||||
|
'challenge/status/(?P<id>[1-9]\d*)/' =>
|
||||||
|
'PhabricatorAuthChallengeStatusController',
|
||||||
),
|
),
|
||||||
|
|
||||||
'message/' => array(
|
'message/' => array(
|
||||||
|
|||||||
@@ -20,7 +20,15 @@ final class PhabricatorAuthConfirmLinkController
|
|||||||
|
|
||||||
$panel_uri = '/settings/panel/external/';
|
$panel_uri = '/settings/panel/external/';
|
||||||
|
|
||||||
if ($request->isFormPost()) {
|
if ($request->isFormOrHisecPost()) {
|
||||||
|
$workflow_key = sprintf(
|
||||||
|
'account.link(%s)',
|
||||||
|
$account->getPHID());
|
||||||
|
|
||||||
|
$hisec_token = id(new PhabricatorAuthSessionEngine())
|
||||||
|
->setWorkflowKey($workflow_key)
|
||||||
|
->requireHighSecurityToken($viewer, $request, $panel_uri);
|
||||||
|
|
||||||
$account->setUserPHID($viewer->getPHID());
|
$account->setUserPHID($viewer->getPHID());
|
||||||
$account->save();
|
$account->save();
|
||||||
|
|
||||||
@@ -31,14 +39,7 @@ final class PhabricatorAuthConfirmLinkController
|
|||||||
return id(new AphrontRedirectResponse())->setURI($panel_uri);
|
return id(new AphrontRedirectResponse())->setURI($panel_uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Provide more information about the external account. Clicking
|
$dialog = $this->newDialog()
|
||||||
// through this form blindly is dangerous.
|
|
||||||
|
|
||||||
// TODO: If the user has password authentication, require them to retype
|
|
||||||
// their password here.
|
|
||||||
|
|
||||||
$dialog = id(new AphrontDialogView())
|
|
||||||
->setUser($viewer)
|
|
||||||
->setTitle(pht('Confirm %s Account Link', $provider->getProviderName()))
|
->setTitle(pht('Confirm %s Account Link', $provider->getProviderName()))
|
||||||
->addCancelButton($panel_uri)
|
->addCancelButton($panel_uri)
|
||||||
->addSubmitButton(pht('Confirm Account Link'));
|
->addSubmitButton(pht('Confirm Account Link'));
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ abstract class PhabricatorAuthController extends PhabricatorController {
|
|||||||
|
|
||||||
private function buildLoginValidateResponse(PhabricatorUser $user) {
|
private function buildLoginValidateResponse(PhabricatorUser $user) {
|
||||||
$validate_uri = new PhutilURI($this->getApplicationURI('validate/'));
|
$validate_uri = new PhutilURI($this->getApplicationURI('validate/'));
|
||||||
$validate_uri->setQueryParam('expect', $user->getUsername());
|
$validate_uri->replaceQueryParam('expect', $user->getUsername());
|
||||||
|
|
||||||
return id(new AphrontRedirectResponse())->setURI((string)$validate_uri);
|
return id(new AphrontRedirectResponse())->setURI((string)$validate_uri);
|
||||||
}
|
}
|
||||||
@@ -213,19 +213,19 @@ abstract class PhabricatorAuthController extends PhabricatorController {
|
|||||||
return array($account, $provider, $response);
|
return array($account, $provider, $response);
|
||||||
}
|
}
|
||||||
|
|
||||||
$provider = PhabricatorAuthProvider::getEnabledProviderByKey(
|
$config = $account->getProviderConfig();
|
||||||
$account->getProviderKey());
|
if (!$config->getIsEnabled()) {
|
||||||
|
|
||||||
if (!$provider) {
|
|
||||||
$response = $this->renderError(
|
$response = $this->renderError(
|
||||||
pht(
|
pht(
|
||||||
'The account you are attempting to register with uses a nonexistent '.
|
'The account you are attempting to register with uses a disabled '.
|
||||||
'or disabled authentication provider (with key "%s"). An '.
|
'authentication provider ("%s"). An administrator may have '.
|
||||||
'administrator may have recently disabled this provider.',
|
'recently disabled this provider.',
|
||||||
$account->getProviderKey()));
|
$config->getDisplayName()));
|
||||||
return array($account, $provider, $response);
|
return array($account, $provider, $response);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$provider = $config->getProvider();
|
||||||
|
|
||||||
return array($account, $provider, null);
|
return array($account, $provider, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,20 @@ final class PhabricatorAuthLinkController
|
|||||||
public function handleRequest(AphrontRequest $request) {
|
public function handleRequest(AphrontRequest $request) {
|
||||||
$viewer = $this->getViewer();
|
$viewer = $this->getViewer();
|
||||||
$action = $request->getURIData('action');
|
$action = $request->getURIData('action');
|
||||||
$provider_key = $request->getURIData('pkey');
|
|
||||||
|
|
||||||
$provider = PhabricatorAuthProvider::getEnabledProviderByKey(
|
$id = $request->getURIData('id');
|
||||||
$provider_key);
|
|
||||||
if (!$provider) {
|
$config = id(new PhabricatorAuthProviderConfigQuery())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->withIDs(array($id))
|
||||||
|
->withIsEnabled(true)
|
||||||
|
->executeOne();
|
||||||
|
if (!$config) {
|
||||||
return new Aphront404Response();
|
return new Aphront404Response();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$provider = $config->getProvider();
|
||||||
|
|
||||||
switch ($action) {
|
switch ($action) {
|
||||||
case 'link':
|
case 'link':
|
||||||
if (!$provider->shouldAllowAccountLink()) {
|
if (!$provider->shouldAllowAccountLink()) {
|
||||||
@@ -37,15 +43,15 @@ final class PhabricatorAuthLinkController
|
|||||||
return new Aphront400Response();
|
return new Aphront400Response();
|
||||||
}
|
}
|
||||||
|
|
||||||
$account = id(new PhabricatorExternalAccount())->loadOneWhere(
|
$accounts = id(new PhabricatorExternalAccountQuery())
|
||||||
'accountType = %s AND accountDomain = %s AND userPHID = %s',
|
->setViewer($viewer)
|
||||||
$provider->getProviderType(),
|
->withUserPHIDs(array($viewer->getPHID()))
|
||||||
$provider->getProviderDomain(),
|
->withProviderConfigPHIDs(array($config->getPHID()))
|
||||||
$viewer->getPHID());
|
->execute();
|
||||||
|
|
||||||
switch ($action) {
|
switch ($action) {
|
||||||
case 'link':
|
case 'link':
|
||||||
if ($account) {
|
if ($accounts) {
|
||||||
return $this->renderErrorPage(
|
return $this->renderErrorPage(
|
||||||
pht('Account Already Linked'),
|
pht('Account Already Linked'),
|
||||||
array(
|
array(
|
||||||
@@ -56,7 +62,7 @@ final class PhabricatorAuthLinkController
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'refresh':
|
case 'refresh':
|
||||||
if (!$account) {
|
if (!$accounts) {
|
||||||
return $this->renderErrorPage(
|
return $this->renderErrorPage(
|
||||||
pht('No Account Linked'),
|
pht('No Account Linked'),
|
||||||
array(
|
array(
|
||||||
@@ -76,11 +82,6 @@ final class PhabricatorAuthLinkController
|
|||||||
|
|
||||||
switch ($action) {
|
switch ($action) {
|
||||||
case 'link':
|
case 'link':
|
||||||
id(new PhabricatorAuthSessionEngine())->requireHighSecuritySession(
|
|
||||||
$viewer,
|
|
||||||
$request,
|
|
||||||
$panel_uri);
|
|
||||||
|
|
||||||
$form = $provider->buildLinkForm($this);
|
$form = $provider->buildLinkForm($this);
|
||||||
break;
|
break;
|
||||||
case 'refresh':
|
case 'refresh':
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ final class PhabricatorAuthLoginController
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$invite = $this->loadInvite();
|
||||||
$provider = $this->provider;
|
$provider = $this->provider;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -103,7 +104,7 @@ final class PhabricatorAuthLoginController
|
|||||||
// The account is not yet attached to a Phabricator user, so this is
|
// The account is not yet attached to a Phabricator user, so this is
|
||||||
// either a registration or an account link request.
|
// either a registration or an account link request.
|
||||||
if (!$viewer->isLoggedIn()) {
|
if (!$viewer->isLoggedIn()) {
|
||||||
if ($provider->shouldAllowRegistration()) {
|
if ($provider->shouldAllowRegistration() || $invite) {
|
||||||
return $this->processRegisterUser($account);
|
return $this->processRegisterUser($account);
|
||||||
} else {
|
} else {
|
||||||
return $this->renderError(
|
return $this->renderError(
|
||||||
|
|||||||
@@ -14,11 +14,6 @@ final class PhabricatorAuthOneTimeLoginController
|
|||||||
$key = $request->getURIData('key');
|
$key = $request->getURIData('key');
|
||||||
$email_id = $request->getURIData('emailID');
|
$email_id = $request->getURIData('emailID');
|
||||||
|
|
||||||
if ($request->getUser()->isLoggedIn()) {
|
|
||||||
return $this->renderError(
|
|
||||||
pht('You are already logged in.'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$target_user = id(new PhabricatorPeopleQuery())
|
$target_user = id(new PhabricatorPeopleQuery())
|
||||||
->setViewer(PhabricatorUser::getOmnipotentUser())
|
->setViewer(PhabricatorUser::getOmnipotentUser())
|
||||||
->withIDs(array($id))
|
->withIDs(array($id))
|
||||||
@@ -27,6 +22,19 @@ final class PhabricatorAuthOneTimeLoginController
|
|||||||
return new Aphront404Response();
|
return new Aphront404Response();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NOTE: We allow you to use a one-time login link for your own current
|
||||||
|
// login account. This supports the "Set Password" flow.
|
||||||
|
|
||||||
|
$is_logged_in = false;
|
||||||
|
if ($viewer->isLoggedIn()) {
|
||||||
|
if ($viewer->getPHID() !== $target_user->getPHID()) {
|
||||||
|
return $this->renderError(
|
||||||
|
pht('You are already logged in.'));
|
||||||
|
} else {
|
||||||
|
$is_logged_in = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// NOTE: As a convenience to users, these one-time login URIs may also
|
// NOTE: As a convenience to users, these one-time login URIs may also
|
||||||
// be associated with an email address which will be verified when the
|
// be associated with an email address which will be verified when the
|
||||||
// URI is used.
|
// URI is used.
|
||||||
@@ -100,7 +108,7 @@ final class PhabricatorAuthOneTimeLoginController
|
|||||||
->addCancelButton('/');
|
->addCancelButton('/');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($request->isFormPost()) {
|
if ($request->isFormPost() || $is_logged_in) {
|
||||||
// If we have an email bound into this URI, verify email so that clicking
|
// If we have an email bound into this URI, verify email so that clicking
|
||||||
// the link in the "Welcome" email is good enough, without requiring users
|
// the link in the "Welcome" email is good enough, without requiring users
|
||||||
// to go through a second round of email verification.
|
// to go through a second round of email verification.
|
||||||
@@ -119,38 +127,15 @@ final class PhabricatorAuthOneTimeLoginController
|
|||||||
}
|
}
|
||||||
unset($unguarded);
|
unset($unguarded);
|
||||||
|
|
||||||
$next = '/';
|
$next_uri = $this->getNextStepURI($target_user);
|
||||||
if (!PhabricatorPasswordAuthProvider::getPasswordProvider()) {
|
|
||||||
$next = '/settings/panel/external/';
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// We're going to let the user reset their password without knowing
|
// If the user is already logged in, we're just doing a "password set"
|
||||||
// the old one. Generate a one-time token for that.
|
// flow. Skip directly to the next step.
|
||||||
$key = Filesystem::readRandomCharacters(16);
|
if ($is_logged_in) {
|
||||||
$password_type =
|
return id(new AphrontRedirectResponse())->setURI($next_uri);
|
||||||
PhabricatorAuthPasswordResetTemporaryTokenType::TOKENTYPE;
|
|
||||||
|
|
||||||
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
|
|
||||||
id(new PhabricatorAuthTemporaryToken())
|
|
||||||
->setTokenResource($target_user->getPHID())
|
|
||||||
->setTokenType($password_type)
|
|
||||||
->setTokenExpires(time() + phutil_units('1 hour in seconds'))
|
|
||||||
->setTokenCode(PhabricatorHash::weakDigest($key))
|
|
||||||
->save();
|
|
||||||
unset($unguarded);
|
|
||||||
|
|
||||||
$panel_uri = '/auth/password/';
|
|
||||||
|
|
||||||
$next = (string)id(new PhutilURI($panel_uri))
|
|
||||||
->setQueryParams(
|
|
||||||
array(
|
|
||||||
'key' => $key,
|
|
||||||
));
|
|
||||||
|
|
||||||
$request->setTemporaryCookie(PhabricatorCookies::COOKIE_HISEC, 'yes');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PhabricatorCookies::setNextURICookie($request, $next, $force = true);
|
PhabricatorCookies::setNextURICookie($request, $next_uri, $force = true);
|
||||||
|
|
||||||
$force_full_session = false;
|
$force_full_session = false;
|
||||||
if ($link_type === PhabricatorAuthSessionEngine::ONETIME_RECOVER) {
|
if ($link_type === PhabricatorAuthSessionEngine::ONETIME_RECOVER) {
|
||||||
@@ -206,4 +191,85 @@ final class PhabricatorAuthOneTimeLoginController
|
|||||||
|
|
||||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getNextStepURI(PhabricatorUser $user) {
|
||||||
|
$request = $this->getRequest();
|
||||||
|
|
||||||
|
// If we have password auth, let the user set or reset their password after
|
||||||
|
// login.
|
||||||
|
$have_passwords = PhabricatorPasswordAuthProvider::getPasswordProvider();
|
||||||
|
if ($have_passwords) {
|
||||||
|
// We're going to let the user reset their password without knowing
|
||||||
|
// the old one. Generate a one-time token for that.
|
||||||
|
$key = Filesystem::readRandomCharacters(16);
|
||||||
|
$password_type =
|
||||||
|
PhabricatorAuthPasswordResetTemporaryTokenType::TOKENTYPE;
|
||||||
|
|
||||||
|
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
|
||||||
|
id(new PhabricatorAuthTemporaryToken())
|
||||||
|
->setTokenResource($user->getPHID())
|
||||||
|
->setTokenType($password_type)
|
||||||
|
->setTokenExpires(time() + phutil_units('1 hour in seconds'))
|
||||||
|
->setTokenCode(PhabricatorHash::weakDigest($key))
|
||||||
|
->save();
|
||||||
|
unset($unguarded);
|
||||||
|
|
||||||
|
$panel_uri = '/auth/password/';
|
||||||
|
|
||||||
|
$request->setTemporaryCookie(PhabricatorCookies::COOKIE_HISEC, 'yes');
|
||||||
|
|
||||||
|
$params = array(
|
||||||
|
'key' => $key,
|
||||||
|
);
|
||||||
|
|
||||||
|
return (string)new PhutilURI($panel_uri, $params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the user already has external accounts linked. If they do,
|
||||||
|
// it's not obvious why they aren't using them to log in, but assume they
|
||||||
|
// know what they're doing. We won't send them to the link workflow.
|
||||||
|
$accounts = id(new PhabricatorExternalAccountQuery())
|
||||||
|
->setViewer($user)
|
||||||
|
->withUserPHIDs(array($user->getPHID()))
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$configs = id(new PhabricatorAuthProviderConfigQuery())
|
||||||
|
->setViewer($user)
|
||||||
|
->withIsEnabled(true)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$linkable = array();
|
||||||
|
foreach ($configs as $config) {
|
||||||
|
if (!$config->getShouldAllowLink()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$provider = $config->getProvider();
|
||||||
|
if (!$provider->isLoginFormAButton()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$linkable[] = $provider;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there's at least one linkable provider, and the user doesn't already
|
||||||
|
// have accounts, send the user to the link workflow.
|
||||||
|
if (!$accounts && $linkable) {
|
||||||
|
return '/auth/external/';
|
||||||
|
}
|
||||||
|
|
||||||
|
// If there are no configured providers and the user is an administrator,
|
||||||
|
// send them to Auth to configure a provider. This is probably where they
|
||||||
|
// want to go. You can end up in this state by accidentally losing your
|
||||||
|
// first session during initial setup, or after restoring exported data
|
||||||
|
// from a hosted instance.
|
||||||
|
if (!$configs && $user->getIsAdmin()) {
|
||||||
|
return '/auth/';
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we didn't find anywhere better to send them, give up and just send
|
||||||
|
// them to the home page.
|
||||||
|
return '/';
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,21 +11,25 @@ final class PhabricatorAuthRegisterController
|
|||||||
$viewer = $this->getViewer();
|
$viewer = $this->getViewer();
|
||||||
$account_key = $request->getURIData('akey');
|
$account_key = $request->getURIData('akey');
|
||||||
|
|
||||||
if ($request->getUser()->isLoggedIn()) {
|
if ($viewer->isLoggedIn()) {
|
||||||
return id(new AphrontRedirectResponse())->setURI('/');
|
return id(new AphrontRedirectResponse())->setURI('/');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$invite = $this->loadInvite();
|
||||||
|
|
||||||
$is_setup = false;
|
$is_setup = false;
|
||||||
if (strlen($account_key)) {
|
if (strlen($account_key)) {
|
||||||
$result = $this->loadAccountForRegistrationOrLinking($account_key);
|
$result = $this->loadAccountForRegistrationOrLinking($account_key);
|
||||||
list($account, $provider, $response) = $result;
|
list($account, $provider, $response) = $result;
|
||||||
$is_default = false;
|
$is_default = false;
|
||||||
} else if ($this->isFirstTimeSetup()) {
|
} else if ($this->isFirstTimeSetup()) {
|
||||||
list($account, $provider, $response) = $this->loadSetupAccount();
|
$account = null;
|
||||||
|
$provider = null;
|
||||||
|
$response = null;
|
||||||
$is_default = true;
|
$is_default = true;
|
||||||
$is_setup = true;
|
$is_setup = true;
|
||||||
} else {
|
} else {
|
||||||
list($account, $provider, $response) = $this->loadDefaultAccount();
|
list($account, $provider, $response) = $this->loadDefaultAccount($invite);
|
||||||
$is_default = true;
|
$is_default = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,24 +37,24 @@ final class PhabricatorAuthRegisterController
|
|||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
$invite = $this->loadInvite();
|
if (!$is_setup) {
|
||||||
|
if (!$provider->shouldAllowRegistration()) {
|
||||||
|
if ($invite) {
|
||||||
|
// If the user has an invite, we allow them to register with any
|
||||||
|
// provider, even a login-only provider.
|
||||||
|
} else {
|
||||||
|
// TODO: This is a routine error if you click "Login" on an external
|
||||||
|
// auth source which doesn't allow registration. The error should be
|
||||||
|
// more tailored.
|
||||||
|
|
||||||
if (!$provider->shouldAllowRegistration()) {
|
return $this->renderError(
|
||||||
if ($invite) {
|
pht(
|
||||||
// If the user has an invite, we allow them to register with any
|
'The account you are attempting to register with uses an '.
|
||||||
// provider, even a login-only provider.
|
'authentication provider ("%s") which does not allow '.
|
||||||
} else {
|
'registration. An administrator may have recently disabled '.
|
||||||
// TODO: This is a routine error if you click "Login" on an external
|
'registration with this provider.',
|
||||||
// auth source which doesn't allow registration. The error should be
|
$provider->getProviderName()));
|
||||||
// more tailored.
|
}
|
||||||
|
|
||||||
return $this->renderError(
|
|
||||||
pht(
|
|
||||||
'The account you are attempting to register with uses an '.
|
|
||||||
'authentication provider ("%s") which does not allow '.
|
|
||||||
'registration. An administrator may have recently disabled '.
|
|
||||||
'registration with this provider.',
|
|
||||||
$provider->getProviderName()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,14 +62,19 @@ final class PhabricatorAuthRegisterController
|
|||||||
|
|
||||||
$user = new PhabricatorUser();
|
$user = new PhabricatorUser();
|
||||||
|
|
||||||
$default_username = $account->getUsername();
|
if ($is_setup) {
|
||||||
$default_realname = $account->getRealName();
|
$default_username = null;
|
||||||
|
$default_realname = null;
|
||||||
|
$default_email = null;
|
||||||
|
} else {
|
||||||
|
$default_username = $account->getUsername();
|
||||||
|
$default_realname = $account->getRealName();
|
||||||
|
$default_email = $account->getEmail();
|
||||||
|
}
|
||||||
|
|
||||||
$account_type = PhabricatorAuthPassword::PASSWORD_TYPE_ACCOUNT;
|
$account_type = PhabricatorAuthPassword::PASSWORD_TYPE_ACCOUNT;
|
||||||
$content_source = PhabricatorContentSource::newFromRequest($request);
|
$content_source = PhabricatorContentSource::newFromRequest($request);
|
||||||
|
|
||||||
$default_email = $account->getEmail();
|
|
||||||
|
|
||||||
if ($invite) {
|
if ($invite) {
|
||||||
$default_email = $invite->getEmailAddress();
|
$default_email = $invite->getEmailAddress();
|
||||||
}
|
}
|
||||||
@@ -212,7 +221,11 @@ final class PhabricatorAuthRegisterController
|
|||||||
$can_edit_email = $profile->getCanEditEmail();
|
$can_edit_email = $profile->getCanEditEmail();
|
||||||
$can_edit_realname = $profile->getCanEditRealName();
|
$can_edit_realname = $profile->getCanEditRealName();
|
||||||
|
|
||||||
$must_set_password = $provider->shouldRequireRegistrationPassword();
|
if ($is_setup) {
|
||||||
|
$must_set_password = false;
|
||||||
|
} else {
|
||||||
|
$must_set_password = $provider->shouldRequireRegistrationPassword();
|
||||||
|
}
|
||||||
|
|
||||||
$can_edit_anything = $profile->getCanEditAnything() || $must_set_password;
|
$can_edit_anything = $profile->getCanEditAnything() || $must_set_password;
|
||||||
$force_verify = $profile->getShouldVerifyEmail();
|
$force_verify = $profile->getShouldVerifyEmail();
|
||||||
@@ -342,9 +355,11 @@ final class PhabricatorAuthRegisterController
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$errors) {
|
if (!$errors) {
|
||||||
$image = $this->loadProfilePicture($account);
|
if (!$is_setup) {
|
||||||
if ($image) {
|
$image = $this->loadProfilePicture($account);
|
||||||
$user->setProfileImagePHID($image->getPHID());
|
if ($image) {
|
||||||
|
$user->setProfileImagePHID($image->getPHID());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -354,17 +369,19 @@ final class PhabricatorAuthRegisterController
|
|||||||
$verify_email = true;
|
$verify_email = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($value_email === $default_email) {
|
if (!$is_setup) {
|
||||||
if ($account->getEmailVerified()) {
|
if ($value_email === $default_email) {
|
||||||
$verify_email = true;
|
if ($account->getEmailVerified()) {
|
||||||
}
|
$verify_email = true;
|
||||||
|
}
|
||||||
|
|
||||||
if ($provider->shouldTrustEmails()) {
|
if ($provider->shouldTrustEmails()) {
|
||||||
$verify_email = true;
|
$verify_email = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($invite) {
|
if ($invite) {
|
||||||
$verify_email = true;
|
$verify_email = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -446,9 +463,11 @@ final class PhabricatorAuthRegisterController
|
|||||||
$transaction_editor->applyTransactions($user, $xactions);
|
$transaction_editor->applyTransactions($user, $xactions);
|
||||||
}
|
}
|
||||||
|
|
||||||
$account->setUserPHID($user->getPHID());
|
if (!$is_setup) {
|
||||||
$provider->willRegisterAccount($account);
|
$account->setUserPHID($user->getPHID());
|
||||||
$account->save();
|
$provider->willRegisterAccount($account);
|
||||||
|
$account->save();
|
||||||
|
}
|
||||||
|
|
||||||
$user->saveTransaction();
|
$user->saveTransaction();
|
||||||
|
|
||||||
@@ -509,7 +528,6 @@ final class PhabricatorAuthRegisterController
|
|||||||
->setAuthProvider($provider)));
|
->setAuthProvider($provider)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($can_edit_username) {
|
if ($can_edit_username) {
|
||||||
$form->appendChild(
|
$form->appendChild(
|
||||||
id(new AphrontFormTextControl())
|
id(new AphrontFormTextControl())
|
||||||
@@ -603,7 +621,7 @@ final class PhabricatorAuthRegisterController
|
|||||||
pht(
|
pht(
|
||||||
'Installation is complete. Register your administrator account '.
|
'Installation is complete. Register your administrator account '.
|
||||||
'below to log in. You will be able to configure options and add '.
|
'below to log in. You will be able to configure options and add '.
|
||||||
'other authentication mechanisms (like LDAP or OAuth) later on.'));
|
'authentication mechanisms later on.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$object_box = id(new PHUIObjectBoxView())
|
$object_box = id(new PHUIObjectBoxView())
|
||||||
@@ -620,11 +638,12 @@ final class PhabricatorAuthRegisterController
|
|||||||
|
|
||||||
$view = id(new PHUITwoColumnView())
|
$view = id(new PHUITwoColumnView())
|
||||||
->setHeader($header)
|
->setHeader($header)
|
||||||
->setFooter(array(
|
->setFooter(
|
||||||
$welcome_view,
|
array(
|
||||||
$invite_header,
|
$welcome_view,
|
||||||
$object_box,
|
$invite_header,
|
||||||
));
|
$object_box,
|
||||||
|
));
|
||||||
|
|
||||||
return $this->newPage()
|
return $this->newPage()
|
||||||
->setTitle($title)
|
->setTitle($title)
|
||||||
@@ -632,17 +651,20 @@ final class PhabricatorAuthRegisterController
|
|||||||
->appendChild($view);
|
->appendChild($view);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function loadDefaultAccount() {
|
private function loadDefaultAccount($invite) {
|
||||||
$providers = PhabricatorAuthProvider::getAllEnabledProviders();
|
$providers = PhabricatorAuthProvider::getAllEnabledProviders();
|
||||||
$account = null;
|
$account = null;
|
||||||
$provider = null;
|
$provider = null;
|
||||||
$response = null;
|
$response = null;
|
||||||
|
|
||||||
foreach ($providers as $key => $candidate_provider) {
|
foreach ($providers as $key => $candidate_provider) {
|
||||||
if (!$candidate_provider->shouldAllowRegistration()) {
|
if (!$invite) {
|
||||||
unset($providers[$key]);
|
if (!$candidate_provider->shouldAllowRegistration()) {
|
||||||
continue;
|
unset($providers[$key]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$candidate_provider->isDefaultRegistrationProvider()) {
|
if (!$candidate_provider->isDefaultRegistrationProvider()) {
|
||||||
unset($providers[$key]);
|
unset($providers[$key]);
|
||||||
}
|
}
|
||||||
@@ -660,24 +682,11 @@ final class PhabricatorAuthRegisterController
|
|||||||
}
|
}
|
||||||
|
|
||||||
$provider = head($providers);
|
$provider = head($providers);
|
||||||
$account = $provider->getDefaultExternalAccount();
|
$account = $provider->newDefaultExternalAccount();
|
||||||
|
|
||||||
return array($account, $provider, $response);
|
return array($account, $provider, $response);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function loadSetupAccount() {
|
|
||||||
$provider = new PhabricatorPasswordAuthProvider();
|
|
||||||
$provider->attachProviderConfig(
|
|
||||||
id(new PhabricatorAuthProviderConfig())
|
|
||||||
->setShouldAllowRegistration(1)
|
|
||||||
->setShouldAllowLogin(1)
|
|
||||||
->setIsEnabled(true));
|
|
||||||
|
|
||||||
$account = $provider->getDefaultExternalAccount();
|
|
||||||
$response = null;
|
|
||||||
return array($account, $provider, $response);
|
|
||||||
}
|
|
||||||
|
|
||||||
private function loadProfilePicture(PhabricatorExternalAccount $account) {
|
private function loadProfilePicture(PhabricatorExternalAccount $account) {
|
||||||
$phid = $account->getProfileImagePHID();
|
$phid = $account->getProfileImagePHID();
|
||||||
if (!$phid) {
|
if (!$phid) {
|
||||||
|
|||||||
@@ -0,0 +1,110 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorAuthSetExternalController
|
||||||
|
extends PhabricatorAuthController {
|
||||||
|
|
||||||
|
public function handleRequest(AphrontRequest $request) {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
|
$configs = id(new PhabricatorAuthProviderConfigQuery())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->withIsEnabled(true)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$linkable = array();
|
||||||
|
foreach ($configs as $config) {
|
||||||
|
if (!$config->getShouldAllowLink()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// For now, only buttons get to appear here: for example, we can't
|
||||||
|
// reasonably embed an entire LDAP form into this UI.
|
||||||
|
$provider = $config->getProvider();
|
||||||
|
if (!$provider->isLoginFormAButton()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$linkable[] = $config;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$linkable) {
|
||||||
|
return $this->newDialog()
|
||||||
|
->setTitle(pht('No Linkable External Providers'))
|
||||||
|
->appendParagraph(
|
||||||
|
pht(
|
||||||
|
'Currently, there are no configured external auth providers '.
|
||||||
|
'which you can link your account to.'))
|
||||||
|
->addCancelButton('/');
|
||||||
|
}
|
||||||
|
|
||||||
|
$text = PhabricatorAuthMessage::loadMessageText(
|
||||||
|
$viewer,
|
||||||
|
PhabricatorAuthLinkMessageType::MESSAGEKEY);
|
||||||
|
if (!strlen($text)) {
|
||||||
|
$text = pht(
|
||||||
|
'You can link your Phabricator account to an external account to '.
|
||||||
|
'allow you to log in more easily in the future. To continue, choose '.
|
||||||
|
'an account to link below. If you prefer not to link your account, '.
|
||||||
|
'you can skip this step.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$remarkup_view = new PHUIRemarkupView($viewer, $text);
|
||||||
|
$remarkup_view = phutil_tag(
|
||||||
|
'div',
|
||||||
|
array(
|
||||||
|
'class' => 'phui-object-box-instructions',
|
||||||
|
),
|
||||||
|
$remarkup_view);
|
||||||
|
|
||||||
|
PhabricatorCookies::setClientIDCookie($request);
|
||||||
|
|
||||||
|
$view = array();
|
||||||
|
foreach ($configs as $config) {
|
||||||
|
$provider = $config->getProvider();
|
||||||
|
|
||||||
|
$form = $provider->buildLinkForm($this);
|
||||||
|
|
||||||
|
if ($provider->isLoginFormAButton()) {
|
||||||
|
require_celerity_resource('auth-css');
|
||||||
|
$form = phutil_tag(
|
||||||
|
'div',
|
||||||
|
array(
|
||||||
|
'class' => 'phabricator-link-button pl',
|
||||||
|
),
|
||||||
|
$form);
|
||||||
|
}
|
||||||
|
|
||||||
|
$view[] = $form;
|
||||||
|
}
|
||||||
|
|
||||||
|
$form = id(new AphrontFormView())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->appendControl(
|
||||||
|
id(new AphrontFormSubmitControl())
|
||||||
|
->addCancelButton('/', pht('Skip This Step')));
|
||||||
|
|
||||||
|
$header = id(new PHUIHeaderView())
|
||||||
|
->setHeader(pht('Link External Account'));
|
||||||
|
|
||||||
|
$box = id(new PHUIObjectBoxView())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->setHeader($header)
|
||||||
|
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
|
||||||
|
->appendChild($remarkup_view)
|
||||||
|
->appendChild($view)
|
||||||
|
->appendChild($form);
|
||||||
|
|
||||||
|
$main_view = id(new PHUITwoColumnView())
|
||||||
|
->setFooter($box);
|
||||||
|
|
||||||
|
$crumbs = $this->buildApplicationCrumbs()
|
||||||
|
->addTextCrumb(pht('Link External Account'))
|
||||||
|
->setBorder(true);
|
||||||
|
|
||||||
|
return $this->newPage()
|
||||||
|
->setTitle(pht('Link External Account'))
|
||||||
|
->setCrumbs($crumbs)
|
||||||
|
->appendChild($main_view);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -54,7 +54,7 @@ final class PhabricatorAuthStartController
|
|||||||
}
|
}
|
||||||
|
|
||||||
$redirect_uri = $request->getRequestURI();
|
$redirect_uri = $request->getRequestURI();
|
||||||
$redirect_uri->setQueryParam('cleared', 1);
|
$redirect_uri->replaceQueryParam('cleared', 1);
|
||||||
return id(new AphrontRedirectResponse())->setURI($redirect_uri);
|
return id(new AphrontRedirectResponse())->setURI($redirect_uri);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -64,7 +64,7 @@ final class PhabricatorAuthStartController
|
|||||||
// the workflow will continue normally.
|
// the workflow will continue normally.
|
||||||
if ($did_clear) {
|
if ($did_clear) {
|
||||||
$redirect_uri = $request->getRequestURI();
|
$redirect_uri = $request->getRequestURI();
|
||||||
$redirect_uri->setQueryParam('cleared', null);
|
$redirect_uri->removeQueryParam('cleared');
|
||||||
return id(new AphrontRedirectResponse())->setURI($redirect_uri);
|
return id(new AphrontRedirectResponse())->setURI($redirect_uri);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,6 +75,11 @@ final class PhabricatorAuthStartController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$configs = array();
|
||||||
|
foreach ($providers as $provider) {
|
||||||
|
$configs[] = $provider->getProviderConfig();
|
||||||
|
}
|
||||||
|
|
||||||
if (!$providers) {
|
if (!$providers) {
|
||||||
if ($this->isFirstTimeSetup()) {
|
if ($this->isFirstTimeSetup()) {
|
||||||
// If this is a fresh install, let the user register their admin
|
// If this is a fresh install, let the user register their admin
|
||||||
@@ -172,23 +177,6 @@ final class PhabricatorAuthStartController
|
|||||||
$button_columns);
|
$button_columns);
|
||||||
}
|
}
|
||||||
|
|
||||||
$handlers = PhabricatorAuthLoginHandler::getAllHandlers();
|
|
||||||
|
|
||||||
$delegating_controller = $this->getDelegatingController();
|
|
||||||
|
|
||||||
$header = array();
|
|
||||||
foreach ($handlers as $handler) {
|
|
||||||
$handler = clone $handler;
|
|
||||||
|
|
||||||
$handler->setRequest($request);
|
|
||||||
|
|
||||||
if ($delegating_controller) {
|
|
||||||
$handler->setDelegatingController($delegating_controller);
|
|
||||||
}
|
|
||||||
|
|
||||||
$header[] = $handler->getAuthLoginHeaderContent();
|
|
||||||
}
|
|
||||||
|
|
||||||
$invite_message = null;
|
$invite_message = null;
|
||||||
if ($invite) {
|
if ($invite) {
|
||||||
$invite_message = $this->renderInviteHeader($invite);
|
$invite_message = $this->renderInviteHeader($invite);
|
||||||
@@ -196,16 +184,18 @@ final class PhabricatorAuthStartController
|
|||||||
|
|
||||||
$custom_message = $this->newCustomStartMessage();
|
$custom_message = $this->newCustomStartMessage();
|
||||||
|
|
||||||
|
$email_login = $this->newEmailLoginView($configs);
|
||||||
|
|
||||||
$crumbs = $this->buildApplicationCrumbs();
|
$crumbs = $this->buildApplicationCrumbs();
|
||||||
$crumbs->addTextCrumb(pht('Login'));
|
$crumbs->addTextCrumb(pht('Login'));
|
||||||
$crumbs->setBorder(true);
|
$crumbs->setBorder(true);
|
||||||
|
|
||||||
$title = pht('Login');
|
$title = pht('Login');
|
||||||
$view = array(
|
$view = array(
|
||||||
$header,
|
|
||||||
$invite_message,
|
$invite_message,
|
||||||
$custom_message,
|
$custom_message,
|
||||||
$out,
|
$out,
|
||||||
|
$email_login,
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->newPage()
|
return $this->newPage()
|
||||||
@@ -329,4 +319,43 @@ final class PhabricatorAuthStartController
|
|||||||
$remarkup_view);
|
$remarkup_view);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function newEmailLoginView(array $configs) {
|
||||||
|
assert_instances_of($configs, 'PhabricatorAuthProviderConfig');
|
||||||
|
|
||||||
|
// Check if password auth is enabled. If it is, the password login form
|
||||||
|
// renders a "Forgot password?" link, so we don't need to provide a
|
||||||
|
// supplemental link.
|
||||||
|
|
||||||
|
$has_password = false;
|
||||||
|
foreach ($configs as $config) {
|
||||||
|
$provider = $config->getProvider();
|
||||||
|
if ($provider instanceof PhabricatorPasswordAuthProvider) {
|
||||||
|
$has_password = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($has_password) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$view = array(
|
||||||
|
pht('Trouble logging in?'),
|
||||||
|
' ',
|
||||||
|
phutil_tag(
|
||||||
|
'a',
|
||||||
|
array(
|
||||||
|
'href' => '/login/email/',
|
||||||
|
),
|
||||||
|
pht('Send a login link to your email address.')),
|
||||||
|
);
|
||||||
|
|
||||||
|
return phutil_tag(
|
||||||
|
'div',
|
||||||
|
array(
|
||||||
|
'class' => 'auth-custom-message',
|
||||||
|
),
|
||||||
|
$view);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,41 +3,45 @@
|
|||||||
final class PhabricatorAuthUnlinkController
|
final class PhabricatorAuthUnlinkController
|
||||||
extends PhabricatorAuthController {
|
extends PhabricatorAuthController {
|
||||||
|
|
||||||
private $providerKey;
|
|
||||||
|
|
||||||
public function handleRequest(AphrontRequest $request) {
|
public function handleRequest(AphrontRequest $request) {
|
||||||
$viewer = $this->getViewer();
|
$viewer = $this->getViewer();
|
||||||
$this->providerKey = $request->getURIData('pkey');
|
$id = $request->getURIData('id');
|
||||||
|
|
||||||
list($type, $domain) = explode(':', $this->providerKey, 2);
|
$account = id(new PhabricatorExternalAccountQuery())
|
||||||
|
->setViewer($viewer)
|
||||||
// Check that this account link actually exists. We don't require the
|
->withIDs(array($id))
|
||||||
// provider to exist because we want users to be able to delete links to
|
->requireCapabilities(
|
||||||
// dead accounts if they want.
|
array(
|
||||||
$account = id(new PhabricatorExternalAccount())->loadOneWhere(
|
PhabricatorPolicyCapability::CAN_VIEW,
|
||||||
'accountType = %s AND accountDomain = %s AND userPHID = %s',
|
PhabricatorPolicyCapability::CAN_EDIT,
|
||||||
$type,
|
))
|
||||||
$domain,
|
->executeOne();
|
||||||
$viewer->getPHID());
|
|
||||||
if (!$account) {
|
if (!$account) {
|
||||||
return $this->renderNoAccountErrorDialog();
|
return new Aphront404Response();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that the provider (if it exists) allows accounts to be unlinked.
|
$done_uri = '/settings/panel/external/';
|
||||||
$provider_key = $this->providerKey;
|
|
||||||
$provider = PhabricatorAuthProvider::getEnabledProviderByKey($provider_key);
|
$config = $account->getProviderConfig();
|
||||||
if ($provider) {
|
$provider = $config->getProvider();
|
||||||
if (!$provider->shouldAllowAccountUnlink()) {
|
if (!$provider->shouldAllowAccountUnlink()) {
|
||||||
return $this->renderNotUnlinkableErrorDialog($provider);
|
return $this->renderNotUnlinkableErrorDialog($provider, $done_uri);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check that this account isn't the last account which can be used to
|
$confirmations = $request->getStrList('confirmations');
|
||||||
// login. We prevent you from removing the last account.
|
$confirmations = array_fuse($confirmations);
|
||||||
|
|
||||||
|
if (!$request->isFormOrHisecPost() || !isset($confirmations['unlink'])) {
|
||||||
|
return $this->renderConfirmDialog($confirmations, $config, $done_uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that this account isn't the only account which can be used to
|
||||||
|
// login. We warn you when you remove your only login account.
|
||||||
if ($account->isUsableForLogin()) {
|
if ($account->isUsableForLogin()) {
|
||||||
$other_accounts = id(new PhabricatorExternalAccount())->loadAllWhere(
|
$other_accounts = id(new PhabricatorExternalAccountQuery())
|
||||||
'userPHID = %s',
|
->setViewer($viewer)
|
||||||
$viewer->getPHID());
|
->withUserPHIDs(array($viewer->getPHID()))
|
||||||
|
->execute();
|
||||||
|
|
||||||
$valid_accounts = 0;
|
$valid_accounts = 0;
|
||||||
foreach ($other_accounts as $other_account) {
|
foreach ($other_accounts as $other_account) {
|
||||||
@@ -47,100 +51,91 @@ final class PhabricatorAuthUnlinkController
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($valid_accounts < 2) {
|
if ($valid_accounts < 2) {
|
||||||
return $this->renderLastUsableAccountErrorDialog();
|
if (!isset($confirmations['only'])) {
|
||||||
|
return $this->renderOnlyUsableAccountConfirmDialog(
|
||||||
|
$confirmations,
|
||||||
|
$done_uri);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($request->isDialogFormPost()) {
|
$workflow_key = sprintf(
|
||||||
$account->delete();
|
'account.unlink(%s)',
|
||||||
|
$account->getPHID());
|
||||||
|
|
||||||
id(new PhabricatorAuthSessionEngine())->terminateLoginSessions(
|
$hisec_token = id(new PhabricatorAuthSessionEngine())
|
||||||
$viewer,
|
->setWorkflowKey($workflow_key)
|
||||||
new PhutilOpaqueEnvelope(
|
->requireHighSecurityToken($viewer, $request, $done_uri);
|
||||||
$request->getCookie(PhabricatorCookies::COOKIE_SESSION)));
|
|
||||||
|
|
||||||
return id(new AphrontRedirectResponse())->setURI($this->getDoneURI());
|
$account->delete();
|
||||||
}
|
|
||||||
|
|
||||||
return $this->renderConfirmDialog();
|
id(new PhabricatorAuthSessionEngine())->terminateLoginSessions(
|
||||||
}
|
$viewer,
|
||||||
|
new PhutilOpaqueEnvelope(
|
||||||
|
$request->getCookie(PhabricatorCookies::COOKIE_SESSION)));
|
||||||
|
|
||||||
private function getDoneURI() {
|
return id(new AphrontRedirectResponse())->setURI($done_uri);
|
||||||
return '/settings/panel/external/';
|
|
||||||
}
|
|
||||||
|
|
||||||
private function renderNoAccountErrorDialog() {
|
|
||||||
$dialog = id(new AphrontDialogView())
|
|
||||||
->setUser($this->getRequest()->getUser())
|
|
||||||
->setTitle(pht('No Such Account'))
|
|
||||||
->appendChild(
|
|
||||||
pht(
|
|
||||||
'You can not unlink this account because it is not linked.'))
|
|
||||||
->addCancelButton($this->getDoneURI());
|
|
||||||
|
|
||||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function renderNotUnlinkableErrorDialog(
|
private function renderNotUnlinkableErrorDialog(
|
||||||
PhabricatorAuthProvider $provider) {
|
PhabricatorAuthProvider $provider,
|
||||||
|
$done_uri) {
|
||||||
|
|
||||||
$dialog = id(new AphrontDialogView())
|
return $this->newDialog()
|
||||||
->setUser($this->getRequest()->getUser())
|
|
||||||
->setTitle(pht('Permanent Account Link'))
|
->setTitle(pht('Permanent Account Link'))
|
||||||
->appendChild(
|
->appendChild(
|
||||||
pht(
|
pht(
|
||||||
'You can not unlink this account because the administrator has '.
|
'You can not unlink this account because the administrator has '.
|
||||||
'configured Phabricator to make links to %s accounts permanent.',
|
'configured Phabricator to make links to "%s" accounts permanent.',
|
||||||
$provider->getProviderName()))
|
$provider->getProviderName()))
|
||||||
->addCancelButton($this->getDoneURI());
|
->addCancelButton($done_uri);
|
||||||
|
|
||||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function renderLastUsableAccountErrorDialog() {
|
private function renderOnlyUsableAccountConfirmDialog(
|
||||||
$dialog = id(new AphrontDialogView())
|
array $confirmations,
|
||||||
->setUser($this->getRequest()->getUser())
|
$done_uri) {
|
||||||
->setTitle(pht('Last Valid Account'))
|
|
||||||
->appendChild(
|
$confirmations[] = 'only';
|
||||||
|
|
||||||
|
return $this->newDialog()
|
||||||
|
->setTitle(pht('Unlink Your Only Login Account?'))
|
||||||
|
->addHiddenInput('confirmations', implode(',', $confirmations))
|
||||||
|
->appendParagraph(
|
||||||
pht(
|
pht(
|
||||||
'You can not unlink this account because you have no other '.
|
'This is the only external login account linked to your Phabicator '.
|
||||||
'valid login accounts. If you removed it, you would be unable '.
|
'account. If you remove it, you may no longer be able to log in.'))
|
||||||
'to log in. Add another authentication method before removing '.
|
->appendParagraph(
|
||||||
'this one.'))
|
pht(
|
||||||
->addCancelButton($this->getDoneURI());
|
'If you lose access to your account, you can recover access by '.
|
||||||
|
'sending yourself an email login link from the login screen.'))
|
||||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
->addCancelButton($done_uri)
|
||||||
|
->addSubmitButton(pht('Unlink External Account'));
|
||||||
}
|
}
|
||||||
|
|
||||||
private function renderConfirmDialog() {
|
private function renderConfirmDialog(
|
||||||
$provider_key = $this->providerKey;
|
array $confirmations,
|
||||||
$provider = PhabricatorAuthProvider::getEnabledProviderByKey($provider_key);
|
PhabricatorAuthProviderConfig $config,
|
||||||
|
$done_uri) {
|
||||||
|
|
||||||
if ($provider) {
|
$confirmations[] = 'unlink';
|
||||||
$title = pht('Unlink "%s" Account?', $provider->getProviderName());
|
$provider = $config->getProvider();
|
||||||
$body = pht(
|
|
||||||
'You will no longer be able to use your %s account to '.
|
|
||||||
'log in to Phabricator.',
|
|
||||||
$provider->getProviderName());
|
|
||||||
} else {
|
|
||||||
$title = pht('Unlink Account?');
|
|
||||||
$body = pht(
|
|
||||||
'You will no longer be able to use this account to log in '.
|
|
||||||
'to Phabricator.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$dialog = id(new AphrontDialogView())
|
$title = pht('Unlink "%s" Account?', $provider->getProviderName());
|
||||||
->setUser($this->getRequest()->getUser())
|
$body = pht(
|
||||||
|
'You will no longer be able to use your %s account to '.
|
||||||
|
'log in to Phabricator.',
|
||||||
|
$provider->getProviderName());
|
||||||
|
|
||||||
|
return $this->newDialog()
|
||||||
->setTitle($title)
|
->setTitle($title)
|
||||||
|
->addHiddenInput('confirmations', implode(',', $confirmations))
|
||||||
->appendParagraph($body)
|
->appendParagraph($body)
|
||||||
->appendParagraph(
|
->appendParagraph(
|
||||||
pht(
|
pht(
|
||||||
'Note: Unlinking an authentication provider will terminate any '.
|
'Note: Unlinking an authentication provider will terminate any '.
|
||||||
'other active login sessions.'))
|
'other active login sessions.'))
|
||||||
->addSubmitButton(pht('Unlink Account'))
|
->addSubmitButton(pht('Unlink Account'))
|
||||||
->addCancelButton($this->getDoneURI());
|
->addCancelButton($done_uri);
|
||||||
|
|
||||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,29 +8,42 @@ final class PhabricatorEmailLoginController
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function handleRequest(AphrontRequest $request) {
|
public function handleRequest(AphrontRequest $request) {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
if (!PhabricatorPasswordAuthProvider::getPasswordProvider()) {
|
$is_logged_in = $viewer->isLoggedIn();
|
||||||
return new Aphront400Response();
|
|
||||||
}
|
|
||||||
|
|
||||||
$e_email = true;
|
$e_email = true;
|
||||||
$e_captcha = true;
|
$e_captcha = true;
|
||||||
$errors = array();
|
$errors = array();
|
||||||
|
|
||||||
$is_serious = PhabricatorEnv::getEnvConfig('phabricator.serious-business');
|
if ($is_logged_in) {
|
||||||
|
if (!$this->isPasswordAuthEnabled()) {
|
||||||
|
return $this->newDialog()
|
||||||
|
->setTitle(pht('No Password Auth'))
|
||||||
|
->appendParagraph(
|
||||||
|
pht(
|
||||||
|
'Password authentication is not enabled and you are already '.
|
||||||
|
'logged in. There is nothing for you here.'))
|
||||||
|
->addCancelButton('/', pht('Continue'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$v_email = $viewer->loadPrimaryEmailAddress();
|
||||||
|
} else {
|
||||||
|
$v_email = $request->getStr('email');
|
||||||
|
}
|
||||||
|
|
||||||
if ($request->isFormPost()) {
|
if ($request->isFormPost()) {
|
||||||
$e_email = null;
|
$e_email = null;
|
||||||
$e_captcha = pht('Again');
|
$e_captcha = pht('Again');
|
||||||
|
|
||||||
$captcha_ok = AphrontFormRecaptchaControl::processCaptcha($request);
|
if (!$is_logged_in) {
|
||||||
if (!$captcha_ok) {
|
$captcha_ok = AphrontFormRecaptchaControl::processCaptcha($request);
|
||||||
$errors[] = pht('Captcha response is incorrect, try again.');
|
if (!$captcha_ok) {
|
||||||
$e_captcha = pht('Invalid');
|
$errors[] = pht('Captcha response is incorrect, try again.');
|
||||||
|
$e_captcha = pht('Invalid');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$email = $request->getStr('email');
|
if (!strlen($v_email)) {
|
||||||
if (!strlen($email)) {
|
|
||||||
$errors[] = pht('You must provide an email address.');
|
$errors[] = pht('You must provide an email address.');
|
||||||
$e_email = pht('Required');
|
$e_email = pht('Required');
|
||||||
}
|
}
|
||||||
@@ -42,7 +55,7 @@ final class PhabricatorEmailLoginController
|
|||||||
|
|
||||||
$target_email = id(new PhabricatorUserEmail())->loadOneWhere(
|
$target_email = id(new PhabricatorUserEmail())->loadOneWhere(
|
||||||
'address = %s',
|
'address = %s',
|
||||||
$email);
|
$v_email);
|
||||||
|
|
||||||
$target_user = null;
|
$target_user = null;
|
||||||
if ($target_email) {
|
if ($target_email) {
|
||||||
@@ -81,33 +94,24 @@ final class PhabricatorEmailLoginController
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!$errors) {
|
if (!$errors) {
|
||||||
$engine = new PhabricatorAuthSessionEngine();
|
$body = $this->newAccountLoginMailBody(
|
||||||
$uri = $engine->getOneTimeLoginURI(
|
|
||||||
$target_user,
|
$target_user,
|
||||||
null,
|
$is_logged_in);
|
||||||
PhabricatorAuthSessionEngine::ONETIME_RESET);
|
|
||||||
|
|
||||||
if ($is_serious) {
|
if ($is_logged_in) {
|
||||||
$body = pht(
|
$subject = pht('[Phabricator] Account Password Link');
|
||||||
"You can use this link to reset your Phabricator password:".
|
$instructions = pht(
|
||||||
"\n\n %s\n",
|
'An email has been sent containing a link you can use to set '.
|
||||||
$uri);
|
'a password for your account.');
|
||||||
} else {
|
} else {
|
||||||
$body = pht(
|
$subject = pht('[Phabricator] Account Login Link');
|
||||||
"Condolences on forgetting your password. You can use this ".
|
$instructions = pht(
|
||||||
"link to reset it:\n\n".
|
'An email has been sent containing a link you can use to log '.
|
||||||
" %s\n\n".
|
'in to your account.');
|
||||||
"After you set a new password, consider writing it down on a ".
|
|
||||||
"sticky note and attaching it to your monitor so you don't ".
|
|
||||||
"forget again! Choosing a very short, easy-to-remember password ".
|
|
||||||
"like \"cat\" or \"1234\" might also help.\n\n".
|
|
||||||
"Best Wishes,\nPhabricator\n",
|
|
||||||
$uri);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$mail = id(new PhabricatorMetaMTAMail())
|
$mail = id(new PhabricatorMetaMTAMail())
|
||||||
->setSubject(pht('[Phabricator] Password Reset'))
|
->setSubject($subject)
|
||||||
->setForceDelivery(true)
|
->setForceDelivery(true)
|
||||||
->addRawTos(array($target_email->getAddress()))
|
->addRawTos(array($target_email->getAddress()))
|
||||||
->setBody($body)
|
->setBody($body)
|
||||||
@@ -116,51 +120,118 @@ final class PhabricatorEmailLoginController
|
|||||||
return $this->newDialog()
|
return $this->newDialog()
|
||||||
->setTitle(pht('Check Your Email'))
|
->setTitle(pht('Check Your Email'))
|
||||||
->setShortTitle(pht('Email Sent'))
|
->setShortTitle(pht('Email Sent'))
|
||||||
->appendParagraph(
|
->appendParagraph($instructions)
|
||||||
pht('An email has been sent with a link you can use to log in.'))
|
|
||||||
->addCancelButton('/', pht('Done'));
|
->addCancelButton('/', pht('Done'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$error_view = null;
|
$form = id(new AphrontFormView())
|
||||||
if ($errors) {
|
->setViewer($viewer);
|
||||||
$error_view = new PHUIInfoView();
|
|
||||||
$error_view->setErrors($errors);
|
if ($this->isPasswordAuthEnabled()) {
|
||||||
|
if ($is_logged_in) {
|
||||||
|
$title = pht('Set Password');
|
||||||
|
$form->appendRemarkupInstructions(
|
||||||
|
pht(
|
||||||
|
'A password reset link will be sent to your primary email '.
|
||||||
|
'address. Follow the link to set an account password.'));
|
||||||
|
} else {
|
||||||
|
$title = pht('Password Reset');
|
||||||
|
$form->appendRemarkupInstructions(
|
||||||
|
pht(
|
||||||
|
'To reset your password, provide your email address. An email '.
|
||||||
|
'with a login link will be sent to you.'));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$title = pht('Email Login');
|
||||||
|
$form->appendRemarkupInstructions(
|
||||||
|
pht(
|
||||||
|
'To access your account, provide your email address. An email '.
|
||||||
|
'with a login link will be sent to you.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$email_auth = new PHUIFormLayoutView();
|
if ($is_logged_in) {
|
||||||
$email_auth->appendChild($error_view);
|
$address_control = new AphrontFormStaticControl();
|
||||||
$email_auth
|
} else {
|
||||||
->setUser($request->getUser())
|
$address_control = id(new AphrontFormTextControl())
|
||||||
->setFullWidth(true)
|
->setName('email')
|
||||||
->appendChild(
|
->setError($e_email);
|
||||||
id(new AphrontFormTextControl())
|
}
|
||||||
->setLabel(pht('Email'))
|
|
||||||
->setName('email')
|
$address_control
|
||||||
->setValue($request->getStr('email'))
|
->setLabel(pht('Email Address'))
|
||||||
->setError($e_email))
|
->setValue($v_email);
|
||||||
->appendChild(
|
|
||||||
|
$form
|
||||||
|
->appendControl($address_control);
|
||||||
|
|
||||||
|
if (!$is_logged_in) {
|
||||||
|
$form->appendControl(
|
||||||
id(new AphrontFormRecaptchaControl())
|
id(new AphrontFormRecaptchaControl())
|
||||||
->setLabel(pht('Captcha'))
|
->setLabel(pht('Captcha'))
|
||||||
->setError($e_captcha));
|
->setError($e_captcha));
|
||||||
|
}
|
||||||
|
|
||||||
$crumbs = $this->buildApplicationCrumbs();
|
return $this->newDialog()
|
||||||
$crumbs->addTextCrumb(pht('Reset Password'));
|
->setTitle($title)
|
||||||
$crumbs->setBorder(true);
|
->setErrors($errors)
|
||||||
|
->setWidth(AphrontDialogView::WIDTH_FORM)
|
||||||
$dialog = new AphrontDialogView();
|
->appendForm($form)
|
||||||
$dialog->setUser($request->getUser());
|
->addCancelButton('/auth/start/')
|
||||||
$dialog->setTitle(pht('Forgot Password / Email Login'));
|
->addSubmitButton(pht('Send Email'));
|
||||||
$dialog->appendChild($email_auth);
|
|
||||||
$dialog->addSubmitButton(pht('Send Email'));
|
|
||||||
$dialog->setSubmitURI('/login/email/');
|
|
||||||
|
|
||||||
return $this->newPage()
|
|
||||||
->setTitle(pht('Forgot Password'))
|
|
||||||
->setCrumbs($crumbs)
|
|
||||||
->appendChild($dialog);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function newAccountLoginMailBody(
|
||||||
|
PhabricatorUser $user,
|
||||||
|
$is_logged_in) {
|
||||||
|
|
||||||
|
$engine = new PhabricatorAuthSessionEngine();
|
||||||
|
$uri = $engine->getOneTimeLoginURI(
|
||||||
|
$user,
|
||||||
|
null,
|
||||||
|
PhabricatorAuthSessionEngine::ONETIME_RESET);
|
||||||
|
|
||||||
|
$is_serious = PhabricatorEnv::getEnvConfig('phabricator.serious-business');
|
||||||
|
$have_passwords = $this->isPasswordAuthEnabled();
|
||||||
|
|
||||||
|
if ($have_passwords) {
|
||||||
|
if ($is_logged_in) {
|
||||||
|
$body = pht(
|
||||||
|
'You can use this link to set a password on your account:'.
|
||||||
|
"\n\n %s\n",
|
||||||
|
$uri);
|
||||||
|
} else if ($is_serious) {
|
||||||
|
$body = pht(
|
||||||
|
"You can use this link to reset your Phabricator password:".
|
||||||
|
"\n\n %s\n",
|
||||||
|
$uri);
|
||||||
|
} else {
|
||||||
|
$body = pht(
|
||||||
|
"Condolences on forgetting your password. You can use this ".
|
||||||
|
"link to reset it:\n\n".
|
||||||
|
" %s\n\n".
|
||||||
|
"After you set a new password, consider writing it down on a ".
|
||||||
|
"sticky note and attaching it to your monitor so you don't ".
|
||||||
|
"forget again! Choosing a very short, easy-to-remember password ".
|
||||||
|
"like \"cat\" or \"1234\" might also help.\n\n".
|
||||||
|
"Best Wishes,\nPhabricator\n",
|
||||||
|
$uri);
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$body = pht(
|
||||||
|
"You can use this login link to regain access to your Phabricator ".
|
||||||
|
"account:".
|
||||||
|
"\n\n".
|
||||||
|
" %s\n",
|
||||||
|
$uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $body;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function isPasswordAuthEnabled() {
|
||||||
|
return (bool)PhabricatorPasswordAuthProvider::getPasswordProvider();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ final class PhabricatorAuthDisableController
|
|||||||
public function handleRequest(AphrontRequest $request) {
|
public function handleRequest(AphrontRequest $request) {
|
||||||
$this->requireApplicationCapability(
|
$this->requireApplicationCapability(
|
||||||
AuthManageProvidersCapability::CAPABILITY);
|
AuthManageProvidersCapability::CAPABILITY);
|
||||||
$viewer = $request->getUser();
|
|
||||||
|
$viewer = $this->getViewer();
|
||||||
$config_id = $request->getURIData('id');
|
$config_id = $request->getURIData('id');
|
||||||
$action = $request->getURIData('action');
|
$action = $request->getURIData('action');
|
||||||
|
|
||||||
@@ -24,6 +25,7 @@ final class PhabricatorAuthDisableController
|
|||||||
}
|
}
|
||||||
|
|
||||||
$is_enable = ($action === 'enable');
|
$is_enable = ($action === 'enable');
|
||||||
|
$done_uri = $config->getURI();
|
||||||
|
|
||||||
if ($request->isDialogFormPost()) {
|
if ($request->isDialogFormPost()) {
|
||||||
$xactions = array();
|
$xactions = array();
|
||||||
@@ -39,8 +41,7 @@ final class PhabricatorAuthDisableController
|
|||||||
->setContinueOnNoEffect(true)
|
->setContinueOnNoEffect(true)
|
||||||
->applyTransactions($config, $xactions);
|
->applyTransactions($config, $xactions);
|
||||||
|
|
||||||
return id(new AphrontRedirectResponse())->setURI(
|
return id(new AphrontRedirectResponse())->setURI($done_uri);
|
||||||
$this->getApplicationURI());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($is_enable) {
|
if ($is_enable) {
|
||||||
@@ -64,8 +65,9 @@ final class PhabricatorAuthDisableController
|
|||||||
// account and pop a warning like "YOU WILL NO LONGER BE ABLE TO LOGIN
|
// account and pop a warning like "YOU WILL NO LONGER BE ABLE TO LOGIN
|
||||||
// YOU GOOF, YOU PROBABLY DO NOT MEAN TO DO THIS". None of this is
|
// YOU GOOF, YOU PROBABLY DO NOT MEAN TO DO THIS". None of this is
|
||||||
// critical and we can wait to see how users manage to shoot themselves
|
// critical and we can wait to see how users manage to shoot themselves
|
||||||
// in the feet. Shortly, `bin/auth` will be able to recover from these
|
// in the feet.
|
||||||
// types of mistakes.
|
|
||||||
|
// `bin/auth` can recover from these types of mistakes.
|
||||||
|
|
||||||
$title = pht('Disable Provider?');
|
$title = pht('Disable Provider?');
|
||||||
$body = pht(
|
$body = pht(
|
||||||
@@ -77,14 +79,11 @@ final class PhabricatorAuthDisableController
|
|||||||
$button = pht('Disable Provider');
|
$button = pht('Disable Provider');
|
||||||
}
|
}
|
||||||
|
|
||||||
$dialog = id(new AphrontDialogView())
|
return $this->newDialog()
|
||||||
->setUser($viewer)
|
|
||||||
->setTitle($title)
|
->setTitle($title)
|
||||||
->appendChild($body)
|
->appendChild($body)
|
||||||
->addCancelButton($this->getApplicationURI())
|
->addCancelButton($done_uri)
|
||||||
->addSubmitButton($button);
|
->addSubmitButton($button);
|
||||||
|
|
||||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,9 @@ final class PhabricatorAuthEditController
|
|||||||
public function handleRequest(AphrontRequest $request) {
|
public function handleRequest(AphrontRequest $request) {
|
||||||
$this->requireApplicationCapability(
|
$this->requireApplicationCapability(
|
||||||
AuthManageProvidersCapability::CAPABILITY);
|
AuthManageProvidersCapability::CAPABILITY);
|
||||||
$viewer = $request->getUser();
|
|
||||||
$provider_class = $request->getURIData('className');
|
$viewer = $this->getViewer();
|
||||||
|
$provider_class = $request->getStr('provider');
|
||||||
$config_id = $request->getURIData('id');
|
$config_id = $request->getURIData('id');
|
||||||
|
|
||||||
if ($config_id) {
|
if ($config_id) {
|
||||||
@@ -155,12 +156,7 @@ final class PhabricatorAuthEditController
|
|||||||
->setContinueOnNoEffect(true)
|
->setContinueOnNoEffect(true)
|
||||||
->applyTransactions($config, $xactions);
|
->applyTransactions($config, $xactions);
|
||||||
|
|
||||||
if ($provider->hasSetupStep() && $is_new) {
|
$next_uri = $config->getURI();
|
||||||
$id = $config->getID();
|
|
||||||
$next_uri = $this->getApplicationURI('config/edit/'.$id.'/');
|
|
||||||
} else {
|
|
||||||
$next_uri = $this->getApplicationURI();
|
|
||||||
}
|
|
||||||
|
|
||||||
return id(new AphrontRedirectResponse())->setURI($next_uri);
|
return id(new AphrontRedirectResponse())->setURI($next_uri);
|
||||||
}
|
}
|
||||||
@@ -184,7 +180,7 @@ final class PhabricatorAuthEditController
|
|||||||
$crumb = pht('Edit Provider');
|
$crumb = pht('Edit Provider');
|
||||||
$title = pht('Edit Auth Provider');
|
$title = pht('Edit Auth Provider');
|
||||||
$header_icon = 'fa-pencil';
|
$header_icon = 'fa-pencil';
|
||||||
$cancel_uri = $this->getApplicationURI();
|
$cancel_uri = $config->getURI();
|
||||||
}
|
}
|
||||||
|
|
||||||
$header = id(new PHUIHeaderView())
|
$header = id(new PHUIHeaderView())
|
||||||
@@ -275,6 +271,7 @@ final class PhabricatorAuthEditController
|
|||||||
|
|
||||||
$form = id(new AphrontFormView())
|
$form = id(new AphrontFormView())
|
||||||
->setUser($viewer)
|
->setUser($viewer)
|
||||||
|
->addHiddenInput('provider', $provider_class)
|
||||||
->appendChild(
|
->appendChild(
|
||||||
id(new AphrontFormCheckboxControl())
|
id(new AphrontFormCheckboxControl())
|
||||||
->setLabel(pht('Allow'))
|
->setLabel(pht('Allow'))
|
||||||
@@ -346,18 +343,6 @@ final class PhabricatorAuthEditController
|
|||||||
$crumbs->addTextCrumb($crumb);
|
$crumbs->addTextCrumb($crumb);
|
||||||
$crumbs->setBorder(true);
|
$crumbs->setBorder(true);
|
||||||
|
|
||||||
$timeline = null;
|
|
||||||
if (!$is_new) {
|
|
||||||
$timeline = $this->buildTransactionTimeline(
|
|
||||||
$config,
|
|
||||||
new PhabricatorAuthProviderConfigTransactionQuery());
|
|
||||||
$xactions = $timeline->getTransactions();
|
|
||||||
foreach ($xactions as $xaction) {
|
|
||||||
$xaction->setProvider($provider);
|
|
||||||
}
|
|
||||||
$timeline->setShouldTerminate(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
$form_box = id(new PHUIObjectBoxView())
|
$form_box = id(new PHUIObjectBoxView())
|
||||||
->setHeaderText(pht('Provider'))
|
->setHeaderText(pht('Provider'))
|
||||||
->setFormErrors($errors)
|
->setFormErrors($errors)
|
||||||
@@ -369,7 +354,6 @@ final class PhabricatorAuthEditController
|
|||||||
->setFooter(array(
|
->setFooter(array(
|
||||||
$form_box,
|
$form_box,
|
||||||
$footer,
|
$footer,
|
||||||
$timeline,
|
|
||||||
));
|
));
|
||||||
|
|
||||||
return $this->newPage()
|
return $this->newPage()
|
||||||
|
|||||||
@@ -19,31 +19,18 @@ final class PhabricatorAuthListController
|
|||||||
|
|
||||||
$id = $config->getID();
|
$id = $config->getID();
|
||||||
|
|
||||||
$edit_uri = $this->getApplicationURI('config/edit/'.$id.'/');
|
$view_uri = $config->getURI();
|
||||||
$enable_uri = $this->getApplicationURI('config/enable/'.$id.'/');
|
|
||||||
$disable_uri = $this->getApplicationURI('config/disable/'.$id.'/');
|
|
||||||
|
|
||||||
$provider = $config->getProvider();
|
$provider = $config->getProvider();
|
||||||
if ($provider) {
|
$name = $provider->getProviderName();
|
||||||
$name = $provider->getProviderName();
|
|
||||||
} else {
|
|
||||||
$name = $config->getProviderType().' ('.$config->getProviderClass().')';
|
|
||||||
}
|
|
||||||
|
|
||||||
$item->setHeader($name);
|
$item
|
||||||
|
->setHeader($name)
|
||||||
|
->setHref($view_uri);
|
||||||
|
|
||||||
if ($provider) {
|
$domain = $provider->getProviderDomain();
|
||||||
$item->setHref($edit_uri);
|
if ($domain !== 'self') {
|
||||||
} else {
|
$item->addAttribute($domain);
|
||||||
$item->addAttribute(pht('Provider Implementation Missing!'));
|
|
||||||
}
|
|
||||||
|
|
||||||
$domain = null;
|
|
||||||
if ($provider) {
|
|
||||||
$domain = $provider->getProviderDomain();
|
|
||||||
if ($domain !== 'self') {
|
|
||||||
$item->addAttribute($domain);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($config->getShouldAllowRegistration()) {
|
if ($config->getShouldAllowRegistration()) {
|
||||||
@@ -54,21 +41,9 @@ final class PhabricatorAuthListController
|
|||||||
|
|
||||||
if ($config->getIsEnabled()) {
|
if ($config->getIsEnabled()) {
|
||||||
$item->setStatusIcon('fa-check-circle green');
|
$item->setStatusIcon('fa-check-circle green');
|
||||||
$item->addAction(
|
|
||||||
id(new PHUIListItemView())
|
|
||||||
->setIcon('fa-times')
|
|
||||||
->setHref($disable_uri)
|
|
||||||
->setDisabled(!$can_manage)
|
|
||||||
->addSigil('workflow'));
|
|
||||||
} else {
|
} else {
|
||||||
$item->setStatusIcon('fa-ban red');
|
$item->setStatusIcon('fa-ban red');
|
||||||
$item->addIcon('fa-ban grey', pht('Disabled'));
|
$item->addIcon('fa-ban grey', pht('Disabled'));
|
||||||
$item->addAction(
|
|
||||||
id(new PHUIListItemView())
|
|
||||||
->setIcon('fa-plus')
|
|
||||||
->setHref($enable_uri)
|
|
||||||
->setDisabled(!$can_manage)
|
|
||||||
->addSigil('workflow'));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$list->addItem($item);
|
$list->addItem($item);
|
||||||
@@ -123,10 +98,11 @@ final class PhabricatorAuthListController
|
|||||||
|
|
||||||
$view = id(new PHUITwoColumnView())
|
$view = id(new PHUITwoColumnView())
|
||||||
->setHeader($header)
|
->setHeader($header)
|
||||||
->setFooter(array(
|
->setFooter(
|
||||||
$guidance,
|
array(
|
||||||
$list,
|
$guidance,
|
||||||
));
|
$list,
|
||||||
|
));
|
||||||
|
|
||||||
$nav = $this->newNavigation()
|
$nav = $this->newNavigation()
|
||||||
->setCrumbs($crumbs)
|
->setCrumbs($crumbs)
|
||||||
|
|||||||
@@ -6,44 +6,12 @@ final class PhabricatorAuthNewController
|
|||||||
public function handleRequest(AphrontRequest $request) {
|
public function handleRequest(AphrontRequest $request) {
|
||||||
$this->requireApplicationCapability(
|
$this->requireApplicationCapability(
|
||||||
AuthManageProvidersCapability::CAPABILITY);
|
AuthManageProvidersCapability::CAPABILITY);
|
||||||
$request = $this->getRequest();
|
|
||||||
$viewer = $request->getUser();
|
$viewer = $this->getViewer();
|
||||||
|
$cancel_uri = $this->getApplicationURI();
|
||||||
|
|
||||||
$providers = PhabricatorAuthProvider::getAllBaseProviders();
|
$providers = PhabricatorAuthProvider::getAllBaseProviders();
|
||||||
|
|
||||||
$e_provider = null;
|
|
||||||
$errors = array();
|
|
||||||
|
|
||||||
if ($request->isFormPost()) {
|
|
||||||
$provider_string = $request->getStr('provider');
|
|
||||||
if (!strlen($provider_string)) {
|
|
||||||
$e_provider = pht('Required');
|
|
||||||
$errors[] = pht('You must select an authentication provider.');
|
|
||||||
} else {
|
|
||||||
$found = false;
|
|
||||||
foreach ($providers as $provider) {
|
|
||||||
if (get_class($provider) === $provider_string) {
|
|
||||||
$found = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!$found) {
|
|
||||||
$e_provider = pht('Invalid');
|
|
||||||
$errors[] = pht('You must select a valid provider.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$errors) {
|
|
||||||
return id(new AphrontRedirectResponse())->setURI(
|
|
||||||
$this->getApplicationURI('/config/new/'.$provider_string.'/'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$options = id(new AphrontFormRadioButtonControl())
|
|
||||||
->setLabel(pht('Provider'))
|
|
||||||
->setName('provider')
|
|
||||||
->setError($e_provider);
|
|
||||||
|
|
||||||
$configured = PhabricatorAuthProvider::getAllProviders();
|
$configured = PhabricatorAuthProvider::getAllProviders();
|
||||||
$configured_classes = array();
|
$configured_classes = array();
|
||||||
foreach ($configured as $configured_provider) {
|
foreach ($configured as $configured_provider) {
|
||||||
@@ -55,57 +23,52 @@ final class PhabricatorAuthNewController
|
|||||||
$providers = msort($providers, 'getLoginOrder');
|
$providers = msort($providers, 'getLoginOrder');
|
||||||
$providers = array_diff_key($providers, $configured_classes) + $providers;
|
$providers = array_diff_key($providers, $configured_classes) + $providers;
|
||||||
|
|
||||||
foreach ($providers as $provider) {
|
$menu = id(new PHUIObjectItemListView())
|
||||||
if (isset($configured_classes[get_class($provider)])) {
|
->setViewer($viewer)
|
||||||
$disabled = true;
|
->setBig(true)
|
||||||
$description = pht('This provider is already configured.');
|
->setFlush(true);
|
||||||
|
|
||||||
|
foreach ($providers as $provider_key => $provider) {
|
||||||
|
$provider_class = get_class($provider);
|
||||||
|
|
||||||
|
$provider_uri = id(new PhutilURI('/config/edit/'))
|
||||||
|
->replaceQueryParam('provider', $provider_class);
|
||||||
|
$provider_uri = $this->getApplicationURI($provider_uri);
|
||||||
|
|
||||||
|
$already_exists = isset($configured_classes[get_class($provider)]);
|
||||||
|
|
||||||
|
$item = id(new PHUIObjectItemView())
|
||||||
|
->setHeader($provider->getNameForCreate())
|
||||||
|
->setImageIcon($provider->newIconView())
|
||||||
|
->addAttribute($provider->getDescriptionForCreate());
|
||||||
|
|
||||||
|
if (!$already_exists) {
|
||||||
|
$item
|
||||||
|
->setHref($provider_uri)
|
||||||
|
->setClickable(true);
|
||||||
} else {
|
} else {
|
||||||
$disabled = false;
|
$item->setDisabled(true);
|
||||||
$description = $provider->getDescriptionForCreate();
|
|
||||||
}
|
}
|
||||||
$options->addButton(
|
|
||||||
get_class($provider),
|
if ($already_exists) {
|
||||||
$provider->getNameForCreate(),
|
$messages = array();
|
||||||
$description,
|
$messages[] = pht('You already have a provider of this type.');
|
||||||
$disabled ? 'disabled' : null,
|
|
||||||
$disabled);
|
$info = id(new PHUIInfoView())
|
||||||
|
->setSeverity(PHUIInfoView::SEVERITY_WARNING)
|
||||||
|
->setErrors($messages);
|
||||||
|
|
||||||
|
$item->appendChild($info);
|
||||||
|
}
|
||||||
|
|
||||||
|
$menu->addItem($item);
|
||||||
}
|
}
|
||||||
|
|
||||||
$form = id(new AphrontFormView())
|
return $this->newDialog()
|
||||||
->setUser($viewer)
|
->setTitle(pht('Add Auth Provider'))
|
||||||
->appendChild($options)
|
->setWidth(AphrontDialogView::WIDTH_FORM)
|
||||||
->appendChild(
|
->appendChild($menu)
|
||||||
id(new AphrontFormSubmitControl())
|
->addCancelButton($cancel_uri);
|
||||||
->addCancelButton($this->getApplicationURI())
|
|
||||||
->setValue(pht('Continue')));
|
|
||||||
|
|
||||||
$form_box = id(new PHUIObjectBoxView())
|
|
||||||
->setHeaderText(pht('Provider'))
|
|
||||||
->setFormErrors($errors)
|
|
||||||
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
|
|
||||||
->setForm($form);
|
|
||||||
|
|
||||||
$crumbs = $this->buildApplicationCrumbs();
|
|
||||||
$crumbs->addTextCrumb(pht('Add Provider'));
|
|
||||||
$crumbs->setBorder(true);
|
|
||||||
|
|
||||||
$title = pht('Add Auth Provider');
|
|
||||||
|
|
||||||
$header = id(new PHUIHeaderView())
|
|
||||||
->setHeader($title)
|
|
||||||
->setHeaderIcon('fa-plus-square');
|
|
||||||
|
|
||||||
$view = id(new PHUITwoColumnView())
|
|
||||||
->setHeader($header)
|
|
||||||
->setFooter(array(
|
|
||||||
$form_box,
|
|
||||||
));
|
|
||||||
|
|
||||||
return $this->newPage()
|
|
||||||
->setTitle($title)
|
|
||||||
->setCrumbs($crumbs)
|
|
||||||
->appendChild($view);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,119 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorAuthProviderViewController
|
||||||
|
extends PhabricatorAuthProviderConfigController {
|
||||||
|
|
||||||
|
public function handleRequest(AphrontRequest $request) {
|
||||||
|
$this->requireApplicationCapability(
|
||||||
|
AuthManageProvidersCapability::CAPABILITY);
|
||||||
|
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
$id = $request->getURIData('id');
|
||||||
|
|
||||||
|
$config = id(new PhabricatorAuthProviderConfigQuery())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->requireCapabilities(
|
||||||
|
array(
|
||||||
|
PhabricatorPolicyCapability::CAN_VIEW,
|
||||||
|
PhabricatorPolicyCapability::CAN_EDIT,
|
||||||
|
))
|
||||||
|
->withIDs(array($id))
|
||||||
|
->executeOne();
|
||||||
|
if (!$config) {
|
||||||
|
return new Aphront404Response();
|
||||||
|
}
|
||||||
|
|
||||||
|
$header = $this->buildHeaderView($config);
|
||||||
|
$properties = $this->buildPropertiesView($config);
|
||||||
|
$curtain = $this->buildCurtain($config);
|
||||||
|
|
||||||
|
$timeline = $this->buildTransactionTimeline(
|
||||||
|
$config,
|
||||||
|
new PhabricatorAuthProviderConfigTransactionQuery());
|
||||||
|
$timeline->setShouldTerminate(true);
|
||||||
|
|
||||||
|
$view = id(new PHUITwoColumnView())
|
||||||
|
->setHeader($header)
|
||||||
|
->setCurtain($curtain)
|
||||||
|
->addPropertySection(pht('Details'), $properties)
|
||||||
|
->setMainColumn($timeline);
|
||||||
|
|
||||||
|
$crumbs = $this->buildApplicationCrumbs()
|
||||||
|
->addTextCrumb($config->getObjectName())
|
||||||
|
->setBorder(true);
|
||||||
|
|
||||||
|
return $this->newPage()
|
||||||
|
->setTitle(pht('Auth Provider: %s', $config->getDisplayName()))
|
||||||
|
->setCrumbs($crumbs)
|
||||||
|
->appendChild($view);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function buildHeaderView(PhabricatorAuthProviderConfig $config) {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
|
$view = id(new PHUIHeaderView())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->setHeader($config->getDisplayName());
|
||||||
|
|
||||||
|
if ($config->getIsEnabled()) {
|
||||||
|
$view->setStatus('fa-check', 'bluegrey', pht('Enabled'));
|
||||||
|
} else {
|
||||||
|
$view->setStatus('fa-ban', 'red', pht('Disabled'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $view;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function buildCurtain(PhabricatorAuthProviderConfig $config) {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
$id = $config->getID();
|
||||||
|
|
||||||
|
$can_edit = PhabricatorPolicyFilter::hasCapability(
|
||||||
|
$viewer,
|
||||||
|
$config,
|
||||||
|
PhabricatorPolicyCapability::CAN_EDIT);
|
||||||
|
|
||||||
|
$curtain = $this->newCurtainView($config);
|
||||||
|
|
||||||
|
$curtain->addAction(
|
||||||
|
id(new PhabricatorActionView())
|
||||||
|
->setName(pht('Edit Auth Provider'))
|
||||||
|
->setIcon('fa-pencil')
|
||||||
|
->setHref($this->getApplicationURI("config/edit/{$id}/"))
|
||||||
|
->setDisabled(!$can_edit)
|
||||||
|
->setWorkflow(!$can_edit));
|
||||||
|
|
||||||
|
if ($config->getIsEnabled()) {
|
||||||
|
$disable_uri = $this->getApplicationURI('config/disable/'.$id.'/');
|
||||||
|
$disable_icon = 'fa-ban';
|
||||||
|
$disable_text = pht('Disable Provider');
|
||||||
|
} else {
|
||||||
|
$disable_uri = $this->getApplicationURI('config/enable/'.$id.'/');
|
||||||
|
$disable_icon = 'fa-check';
|
||||||
|
$disable_text = pht('Enable Provider');
|
||||||
|
}
|
||||||
|
|
||||||
|
$curtain->addAction(
|
||||||
|
id(new PhabricatorActionView())
|
||||||
|
->setName($disable_text)
|
||||||
|
->setIcon($disable_icon)
|
||||||
|
->setHref($disable_uri)
|
||||||
|
->setDisabled(!$can_edit)
|
||||||
|
->setWorkflow(true));
|
||||||
|
|
||||||
|
return $curtain;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function buildPropertiesView(PhabricatorAuthProviderConfig $config) {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
|
$view = id(new PHUIPropertyListView())
|
||||||
|
->setViewer($viewer);
|
||||||
|
|
||||||
|
$view->addProperty(
|
||||||
|
pht('Provider Type'),
|
||||||
|
$config->getProvider()->getProviderName());
|
||||||
|
|
||||||
|
return $view;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorAuthChallengeStatusController
|
||||||
|
extends PhabricatorAuthController {
|
||||||
|
|
||||||
|
public function shouldAllowPartialSessions() {
|
||||||
|
// We expect that users may request the status of an MFA challenge when
|
||||||
|
// they hit the session upgrade gate on login.
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function handleRequest(AphrontRequest $request) {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
$id = $request->getURIData('id');
|
||||||
|
$now = PhabricatorTime::getNow();
|
||||||
|
|
||||||
|
$result = new PhabricatorAuthChallengeUpdate();
|
||||||
|
|
||||||
|
$challenge = id(new PhabricatorAuthChallengeQuery())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->withIDs(array($id))
|
||||||
|
->withUserPHIDs(array($viewer->getPHID()))
|
||||||
|
->withChallengeTTLBetween($now, null)
|
||||||
|
->executeOne();
|
||||||
|
if ($challenge) {
|
||||||
|
$config = id(new PhabricatorAuthFactorConfigQuery())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->withPHIDs(array($challenge->getFactorPHID()))
|
||||||
|
->executeOne();
|
||||||
|
if ($config) {
|
||||||
|
$provider = $config->getFactorProvider();
|
||||||
|
$factor = $provider->getFactor();
|
||||||
|
|
||||||
|
$result = $factor->newChallengeStatusView(
|
||||||
|
$config,
|
||||||
|
$provider,
|
||||||
|
$viewer,
|
||||||
|
$challenge);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return id(new AphrontAjaxResponse())
|
||||||
|
->setContent($result->newContent());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -45,7 +45,7 @@ final class PhabricatorAuthFactorProviderEditController
|
|||||||
|
|
||||||
foreach ($factors as $factor_key => $factor) {
|
foreach ($factors as $factor_key => $factor) {
|
||||||
$factor_uri = id(new PhutilURI('/mfa/edit/'))
|
$factor_uri = id(new PhutilURI('/mfa/edit/'))
|
||||||
->setQueryParam('providerFactorKey', $factor_key);
|
->replaceQueryParam('providerFactorKey', $factor_key);
|
||||||
$factor_uri = $this->getApplicationURI($factor_uri);
|
$factor_uri = $this->getApplicationURI($factor_uri);
|
||||||
|
|
||||||
$is_enabled = $factor->canCreateNewProvider();
|
$is_enabled = $factor->canCreateNewProvider();
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ final class PhabricatorAuthInviteEngine extends Phobject {
|
|||||||
// no address. Users can use password recovery to access the other
|
// no address. Users can use password recovery to access the other
|
||||||
// account if they really control the address.
|
// account if they really control the address.
|
||||||
throw id(new PhabricatorAuthInviteAccountException(
|
throw id(new PhabricatorAuthInviteAccountException(
|
||||||
pht('Wrong Acount'),
|
pht('Wrong Account'),
|
||||||
pht(
|
pht(
|
||||||
'You are logged in as %s, but the email address you just '.
|
'You are logged in as %s, but the email address you just '.
|
||||||
'clicked a link from is already the primary email address '.
|
'clicked a link from is already the primary email address '.
|
||||||
|
|||||||
@@ -714,7 +714,14 @@ final class PhabricatorAuthSessionEngine extends Phobject {
|
|||||||
if (isset($validation_results[$factor_phid])) {
|
if (isset($validation_results[$factor_phid])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$validation_results[$factor_phid] = new PhabricatorAuthFactorResult();
|
|
||||||
|
$issued_challenges = idx($challenge_map, $factor_phid, array());
|
||||||
|
|
||||||
|
$validation_results[$factor_phid] = $impl->getResultForPrompt(
|
||||||
|
$factor,
|
||||||
|
$viewer,
|
||||||
|
$request,
|
||||||
|
$issued_challenges);
|
||||||
}
|
}
|
||||||
|
|
||||||
throw id(new PhabricatorAuthHighSecurityRequiredException())
|
throw id(new PhabricatorAuthHighSecurityRequiredException())
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ final class PhabricatorAuthMainMenuBarExtension
|
|||||||
$uri = new PhutilURI('/auth/start/');
|
$uri = new PhutilURI('/auth/start/');
|
||||||
if ($controller) {
|
if ($controller) {
|
||||||
$path = $controller->getRequest()->getPath();
|
$path = $controller->getRequest()->getPath();
|
||||||
$uri->setQueryParam('next', $path);
|
$uri->replaceQueryParam('next', $path);
|
||||||
}
|
}
|
||||||
|
|
||||||
return id(new PHUIButtonView())
|
return id(new PHUIButtonView())
|
||||||
|
|||||||
@@ -80,6 +80,14 @@ abstract class PhabricatorAuthFactor extends Phobject {
|
|||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function newChallengeStatusView(
|
||||||
|
PhabricatorAuthFactorConfig $config,
|
||||||
|
PhabricatorAuthFactorProvider $provider,
|
||||||
|
PhabricatorUser $viewer,
|
||||||
|
PhabricatorAuthChallenge $challenge) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is this a factor which depends on the user's contact number?
|
* Is this a factor which depends on the user's contact number?
|
||||||
*
|
*
|
||||||
@@ -123,6 +131,7 @@ abstract class PhabricatorAuthFactor extends Phobject {
|
|||||||
->setUserPHID($viewer->getPHID())
|
->setUserPHID($viewer->getPHID())
|
||||||
->setSessionPHID($viewer->getSession()->getPHID())
|
->setSessionPHID($viewer->getSession()->getPHID())
|
||||||
->setFactorPHID($config->getPHID())
|
->setFactorPHID($config->getPHID())
|
||||||
|
->setIsNewChallenge(true)
|
||||||
->setWorkflowKey($engine->getWorkflowKey());
|
->setWorkflowKey($engine->getWorkflowKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,11 +218,43 @@ abstract class PhabricatorAuthFactor extends Phobject {
|
|||||||
get_class($this)));
|
get_class($this)));
|
||||||
}
|
}
|
||||||
|
|
||||||
$result->setIssuedChallenges($challenges);
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
final public function getResultForPrompt(
|
||||||
|
PhabricatorAuthFactorConfig $config,
|
||||||
|
PhabricatorUser $viewer,
|
||||||
|
AphrontRequest $request,
|
||||||
|
array $challenges) {
|
||||||
|
assert_instances_of($challenges, 'PhabricatorAuthChallenge');
|
||||||
|
|
||||||
|
$result = $this->newResultForPrompt(
|
||||||
|
$config,
|
||||||
|
$viewer,
|
||||||
|
$request,
|
||||||
|
$challenges);
|
||||||
|
|
||||||
|
if (!$this->isAuthResult($result)) {
|
||||||
|
throw new Exception(
|
||||||
|
pht(
|
||||||
|
'Expected "newResultForPrompt()" to return an object of class "%s", '.
|
||||||
|
'but it returned something else ("%s"; in "%s").',
|
||||||
|
'PhabricatorAuthFactorResult',
|
||||||
|
phutil_describe_type($result),
|
||||||
|
get_class($this)));
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function newResultForPrompt(
|
||||||
|
PhabricatorAuthFactorConfig $config,
|
||||||
|
PhabricatorUser $viewer,
|
||||||
|
AphrontRequest $request,
|
||||||
|
array $challenges) {
|
||||||
|
return $this->newResult();
|
||||||
|
}
|
||||||
|
|
||||||
abstract protected function newResultFromIssuedChallenges(
|
abstract protected function newResultFromIssuedChallenges(
|
||||||
PhabricatorAuthFactorConfig $config,
|
PhabricatorAuthFactorConfig $config,
|
||||||
PhabricatorUser $viewer,
|
PhabricatorUser $viewer,
|
||||||
@@ -241,8 +282,6 @@ abstract class PhabricatorAuthFactor extends Phobject {
|
|||||||
get_class($this)));
|
get_class($this)));
|
||||||
}
|
}
|
||||||
|
|
||||||
$result->setIssuedChallenges($challenges);
|
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,8 +322,11 @@ abstract class PhabricatorAuthFactor extends Phobject {
|
|||||||
|
|
||||||
$error = $result->getErrorMessage();
|
$error = $result->getErrorMessage();
|
||||||
|
|
||||||
$icon = id(new PHUIIconView())
|
$icon = $result->getIcon();
|
||||||
->setIcon('fa-clock-o', 'red');
|
if (!$icon) {
|
||||||
|
$icon = id(new PHUIIconView())
|
||||||
|
->setIcon('fa-clock-o', 'red');
|
||||||
|
}
|
||||||
|
|
||||||
return id(new PHUIFormTimerControl())
|
return id(new PHUIFormTimerControl())
|
||||||
->setIcon($icon)
|
->setIcon($icon)
|
||||||
@@ -295,8 +337,11 @@ abstract class PhabricatorAuthFactor extends Phobject {
|
|||||||
private function newAnsweredControl(
|
private function newAnsweredControl(
|
||||||
PhabricatorAuthFactorResult $result) {
|
PhabricatorAuthFactorResult $result) {
|
||||||
|
|
||||||
$icon = id(new PHUIIconView())
|
$icon = $result->getIcon();
|
||||||
->setIcon('fa-check-circle-o', 'green');
|
if (!$icon) {
|
||||||
|
$icon = id(new PHUIIconView())
|
||||||
|
->setIcon('fa-check-circle-o', 'green');
|
||||||
|
}
|
||||||
|
|
||||||
return id(new PHUIFormTimerControl())
|
return id(new PHUIFormTimerControl())
|
||||||
->setIcon($icon)
|
->setIcon($icon)
|
||||||
@@ -309,8 +354,11 @@ abstract class PhabricatorAuthFactor extends Phobject {
|
|||||||
|
|
||||||
$error = $result->getErrorMessage();
|
$error = $result->getErrorMessage();
|
||||||
|
|
||||||
$icon = id(new PHUIIconView())
|
$icon = $result->getIcon();
|
||||||
->setIcon('fa-times', 'red');
|
if (!$icon) {
|
||||||
|
$icon = id(new PHUIIconView())
|
||||||
|
->setIcon('fa-times', 'red');
|
||||||
|
}
|
||||||
|
|
||||||
return id(new PHUIFormTimerControl())
|
return id(new PHUIFormTimerControl())
|
||||||
->setIcon($icon)
|
->setIcon($icon)
|
||||||
@@ -323,12 +371,24 @@ abstract class PhabricatorAuthFactor extends Phobject {
|
|||||||
|
|
||||||
$error = $result->getErrorMessage();
|
$error = $result->getErrorMessage();
|
||||||
|
|
||||||
$icon = id(new PHUIIconView())
|
$icon = $result->getIcon();
|
||||||
->setIcon('fa-commenting', 'green');
|
if (!$icon) {
|
||||||
|
$icon = id(new PHUIIconView())
|
||||||
|
->setIcon('fa-commenting', 'green');
|
||||||
|
}
|
||||||
|
|
||||||
return id(new PHUIFormTimerControl())
|
$control = id(new PHUIFormTimerControl())
|
||||||
->setIcon($icon)
|
->setIcon($icon)
|
||||||
->appendChild($error);
|
->appendChild($error);
|
||||||
|
|
||||||
|
$status_challenge = $result->getStatusChallenge();
|
||||||
|
if ($status_challenge) {
|
||||||
|
$id = $status_challenge->getID();
|
||||||
|
$uri = "/auth/mfa/challenge/status/{$id}/";
|
||||||
|
$control->setUpdateURI($uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $control;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ final class PhabricatorAuthFactorResult
|
|||||||
private $errorMessage;
|
private $errorMessage;
|
||||||
private $value;
|
private $value;
|
||||||
private $issuedChallenges = array();
|
private $issuedChallenges = array();
|
||||||
|
private $icon;
|
||||||
|
private $statusChallenge;
|
||||||
|
|
||||||
public function setAnsweredChallenge(PhabricatorAuthChallenge $challenge) {
|
public function setAnsweredChallenge(PhabricatorAuthChallenge $challenge) {
|
||||||
if (!$challenge->getIsAnsweredChallenge()) {
|
if (!$challenge->getIsAnsweredChallenge()) {
|
||||||
@@ -33,6 +35,15 @@ final class PhabricatorAuthFactorResult
|
|||||||
return $this->answeredChallenge;
|
return $this->answeredChallenge;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setStatusChallenge(PhabricatorAuthChallenge $challenge) {
|
||||||
|
$this->statusChallenge = $challenge;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getStatusChallenge() {
|
||||||
|
return $this->statusChallenge;
|
||||||
|
}
|
||||||
|
|
||||||
public function getIsValid() {
|
public function getIsValid() {
|
||||||
return (bool)$this->getAnsweredChallenge();
|
return (bool)$this->getAnsweredChallenge();
|
||||||
}
|
}
|
||||||
@@ -82,14 +93,13 @@ final class PhabricatorAuthFactorResult
|
|||||||
return $this->value;
|
return $this->value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setIssuedChallenges(array $issued_challenges) {
|
public function setIcon(PHUIIconView $icon) {
|
||||||
assert_instances_of($issued_challenges, 'PhabricatorAuthChallenge');
|
$this->icon = $icon;
|
||||||
$this->issuedChallenges = $issued_challenges;
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getIssuedChallenges() {
|
public function getIcon() {
|
||||||
return $this->issuedChallenges;
|
return $this->icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -585,7 +585,7 @@ final class PhabricatorDuoAuthFactor
|
|||||||
$result = $this->newDuoFuture($provider)
|
$result = $this->newDuoFuture($provider)
|
||||||
->setHTTPMethod('GET')
|
->setHTTPMethod('GET')
|
||||||
->setMethod('auth_status', $parameters)
|
->setMethod('auth_status', $parameters)
|
||||||
->setTimeout(5)
|
->setTimeout(3)
|
||||||
->resolve();
|
->resolve();
|
||||||
|
|
||||||
$state = $result['response']['result'];
|
$state = $result['response']['result'];
|
||||||
@@ -612,7 +612,22 @@ final class PhabricatorDuoAuthFactor
|
|||||||
return $this->newResult()
|
return $this->newResult()
|
||||||
->setAnsweredChallenge($challenge);
|
->setAnsweredChallenge($challenge);
|
||||||
case 'waiting':
|
case 'waiting':
|
||||||
// No result yet, we'll render a default state later on.
|
// If we didn't just issue this challenge, give the user a stronger
|
||||||
|
// hint that they need to follow the instructions.
|
||||||
|
if (!$challenge->getIsNewChallenge()) {
|
||||||
|
return $this->newResult()
|
||||||
|
->setIsContinue(true)
|
||||||
|
->setIcon(
|
||||||
|
id(new PHUIIconView())
|
||||||
|
->setIcon('fa-exclamation-triangle', 'yellow'))
|
||||||
|
->setErrorMessage(
|
||||||
|
pht(
|
||||||
|
'You must approve the challenge which was sent to your '.
|
||||||
|
'phone. Open the Duo application and confirm the challenge, '.
|
||||||
|
'then continue.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, we'll construct a default message later on.
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case 'deny':
|
case 'deny':
|
||||||
@@ -646,15 +661,6 @@ final class PhabricatorDuoAuthFactor
|
|||||||
PhabricatorAuthFactorResult $result) {
|
PhabricatorAuthFactorResult $result) {
|
||||||
|
|
||||||
$control = $this->newAutomaticControl($result);
|
$control = $this->newAutomaticControl($result);
|
||||||
if (!$control) {
|
|
||||||
$result = $this->newResult()
|
|
||||||
->setIsContinue(true)
|
|
||||||
->setErrorMessage(
|
|
||||||
pht(
|
|
||||||
'A challenge has been sent to your phone. Open the Duo '.
|
|
||||||
'application and confirm the challenge, then continue.'));
|
|
||||||
$control = $this->newAutomaticControl($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
$control
|
$control
|
||||||
->setLabel(pht('Duo'))
|
->setLabel(pht('Duo'))
|
||||||
@@ -666,8 +672,7 @@ final class PhabricatorDuoAuthFactor
|
|||||||
public function getRequestHasChallengeResponse(
|
public function getRequestHasChallengeResponse(
|
||||||
PhabricatorAuthFactorConfig $config,
|
PhabricatorAuthFactorConfig $config,
|
||||||
AphrontRequest $request) {
|
AphrontRequest $request) {
|
||||||
$value = $this->getChallengeResponseFromRequest($config, $request);
|
return false;
|
||||||
return (bool)strlen($value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function newResultFromChallengeResponse(
|
protected function newResultFromChallengeResponse(
|
||||||
@@ -676,39 +681,38 @@ final class PhabricatorDuoAuthFactor
|
|||||||
AphrontRequest $request,
|
AphrontRequest $request,
|
||||||
array $challenges) {
|
array $challenges) {
|
||||||
|
|
||||||
|
return $this->getResultForPrompt(
|
||||||
|
$config,
|
||||||
|
$viewer,
|
||||||
|
$request,
|
||||||
|
$challenges);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function newResultForPrompt(
|
||||||
|
PhabricatorAuthFactorConfig $config,
|
||||||
|
PhabricatorUser $viewer,
|
||||||
|
AphrontRequest $request,
|
||||||
|
array $challenges) {
|
||||||
|
|
||||||
|
$result = $this->newResult()
|
||||||
|
->setIsContinue(true)
|
||||||
|
->setErrorMessage(
|
||||||
|
pht(
|
||||||
|
'A challenge has been sent to your phone. Open the Duo '.
|
||||||
|
'application and confirm the challenge, then continue.'));
|
||||||
|
|
||||||
$challenge = $this->getChallengeForCurrentContext(
|
$challenge = $this->getChallengeForCurrentContext(
|
||||||
$config,
|
$config,
|
||||||
$viewer,
|
$viewer,
|
||||||
$challenges);
|
$challenges);
|
||||||
|
if ($challenge) {
|
||||||
$code = $this->getChallengeResponseFromRequest(
|
$result
|
||||||
$config,
|
->setStatusChallenge($challenge)
|
||||||
$request);
|
->setIcon(
|
||||||
|
id(new PHUIIconView())
|
||||||
$result = $this->newResult()
|
->setIcon('fa-refresh', 'green ph-spin'));
|
||||||
->setValue($code);
|
|
||||||
|
|
||||||
if ($challenge->getIsAnsweredChallenge()) {
|
|
||||||
return $result->setAnsweredChallenge($challenge);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (phutil_hashes_are_identical($code, $challenge->getChallengeKey())) {
|
|
||||||
$ttl = PhabricatorTime::getNow() + phutil_units('15 minutes in seconds');
|
|
||||||
|
|
||||||
$challenge
|
|
||||||
->markChallengeAsAnswered($ttl);
|
|
||||||
|
|
||||||
return $result->setAnsweredChallenge($challenge);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strlen($code)) {
|
|
||||||
$error_message = pht('Invalid');
|
|
||||||
} else {
|
|
||||||
$error_message = pht('Required');
|
|
||||||
}
|
|
||||||
|
|
||||||
$result->setErrorMessage($error_message);
|
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -810,4 +814,54 @@ final class PhabricatorDuoAuthFactor
|
|||||||
$hostname));
|
$hostname));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function newChallengeStatusView(
|
||||||
|
PhabricatorAuthFactorConfig $config,
|
||||||
|
PhabricatorAuthFactorProvider $provider,
|
||||||
|
PhabricatorUser $viewer,
|
||||||
|
PhabricatorAuthChallenge $challenge) {
|
||||||
|
|
||||||
|
$duo_xaction = $challenge->getChallengeKey();
|
||||||
|
|
||||||
|
$parameters = array(
|
||||||
|
'txid' => $duo_xaction,
|
||||||
|
);
|
||||||
|
|
||||||
|
$default_result = id(new PhabricatorAuthChallengeUpdate())
|
||||||
|
->setRetry(true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$result = $this->newDuoFuture($provider)
|
||||||
|
->setHTTPMethod('GET')
|
||||||
|
->setMethod('auth_status', $parameters)
|
||||||
|
->setTimeout(5)
|
||||||
|
->resolve();
|
||||||
|
|
||||||
|
$state = $result['response']['result'];
|
||||||
|
} catch (HTTPFutureCURLResponseStatus $exception) {
|
||||||
|
// If we failed or timed out, retry. Usually, this is a timeout.
|
||||||
|
return id(new PhabricatorAuthChallengeUpdate())
|
||||||
|
->setRetry(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// For now, don't update the view for anything but an "Allow". Updates
|
||||||
|
// here are just about providing more visual feedback for user convenience.
|
||||||
|
if ($state !== 'allow') {
|
||||||
|
return id(new PhabricatorAuthChallengeUpdate())
|
||||||
|
->setRetry(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
$icon = id(new PHUIIconView())
|
||||||
|
->setIcon('fa-check-circle-o', 'green');
|
||||||
|
|
||||||
|
$view = id(new PHUIFormTimerControl())
|
||||||
|
->setIcon($icon)
|
||||||
|
->appendChild(pht('You responded to this challenge correctly.'))
|
||||||
|
->newTimerView();
|
||||||
|
|
||||||
|
return id(new PhabricatorAuthChallengeUpdate())
|
||||||
|
->setState('allow')
|
||||||
|
->setRetry(false)
|
||||||
|
->setMarkup($view);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -128,6 +128,7 @@ final class PhabricatorTOTPAuthFactor extends PhabricatorAuthFactor {
|
|||||||
->setLabel(pht('TOTP Code'))
|
->setLabel(pht('TOTP Code'))
|
||||||
->setName('totpcode')
|
->setName('totpcode')
|
||||||
->setValue($code)
|
->setValue($code)
|
||||||
|
->setAutofocus(true)
|
||||||
->setError($e_code));
|
->setError($e_code));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,11 +80,6 @@ final class PhabricatorDuoFuture
|
|||||||
$host = $this->apiHostname;
|
$host = $this->apiHostname;
|
||||||
$host = phutil_utf8_strtolower($host);
|
$host = phutil_utf8_strtolower($host);
|
||||||
|
|
||||||
$uri = id(new PhutilURI(''))
|
|
||||||
->setProtocol('https')
|
|
||||||
->setDomain($host)
|
|
||||||
->setPath($path);
|
|
||||||
|
|
||||||
$data = $this->parameters;
|
$data = $this->parameters;
|
||||||
$date = date('r');
|
$date = date('r');
|
||||||
|
|
||||||
@@ -109,11 +104,19 @@ final class PhabricatorDuoFuture
|
|||||||
$signature = new PhutilOpaqueEnvelope($signature);
|
$signature = new PhutilOpaqueEnvelope($signature);
|
||||||
|
|
||||||
if ($http_method === 'GET') {
|
if ($http_method === 'GET') {
|
||||||
$uri->setQueryParams($data);
|
$uri_data = $data;
|
||||||
$data = array();
|
$body_data = array();
|
||||||
|
} else {
|
||||||
|
$uri_data = array();
|
||||||
|
$body_data = $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
$future = id(new HTTPSFuture($uri, $data))
|
$uri = id(new PhutilURI('', $uri_data))
|
||||||
|
->setProtocol('https')
|
||||||
|
->setDomain($host)
|
||||||
|
->setPath($path);
|
||||||
|
|
||||||
|
$future = id(new HTTPSFuture($uri, $body_data))
|
||||||
->setHTTPBasicAuthCredentials($this->integrationKey, $signature)
|
->setHTTPBasicAuthCredentials($this->integrationKey, $signature)
|
||||||
->setMethod($http_method)
|
->setMethod($http_method)
|
||||||
->addHeader('Accept', 'application/json')
|
->addHeader('Accept', 'application/json')
|
||||||
|
|||||||
@@ -10,6 +10,26 @@ final class PhabricatorAuthProvidersGuidanceEngineExtension
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function generateGuidance(PhabricatorGuidanceContext $context) {
|
public function generateGuidance(PhabricatorGuidanceContext $context) {
|
||||||
|
$configs = id(new PhabricatorAuthProviderConfigQuery())
|
||||||
|
->setViewer(PhabricatorUser::getOmnipotentUser())
|
||||||
|
->withIsEnabled(true)
|
||||||
|
->execute();
|
||||||
|
|
||||||
|
$allows_registration = false;
|
||||||
|
foreach ($configs as $config) {
|
||||||
|
$provider = $config->getProvider();
|
||||||
|
if ($provider->shouldAllowRegistration()) {
|
||||||
|
$allows_registration = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If no provider allows registration, we don't need provide any warnings
|
||||||
|
// about registration being too open.
|
||||||
|
if (!$allows_registration) {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
$domains_key = 'auth.email-domains';
|
$domains_key = 'auth.email-domains';
|
||||||
$domains_link = $this->renderConfigLink($domains_key);
|
$domains_link = $this->renderConfigLink($domains_key);
|
||||||
$domains_value = PhabricatorEnv::getEnvConfig($domains_key);
|
$domains_value = PhabricatorEnv::getEnvConfig($domains_key);
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
abstract class PhabricatorAuthLoginHandler
|
|
||||||
extends Phobject {
|
|
||||||
|
|
||||||
private $request;
|
|
||||||
private $delegatingController;
|
|
||||||
|
|
||||||
public function getAuthLoginHeaderContent() {
|
|
||||||
return array();
|
|
||||||
}
|
|
||||||
|
|
||||||
final public function setDelegatingController(AphrontController $controller) {
|
|
||||||
$this->delegatingController = $controller;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
final public function getDelegatingController() {
|
|
||||||
return $this->delegatingController;
|
|
||||||
}
|
|
||||||
|
|
||||||
final public function setRequest(AphrontRequest $request) {
|
|
||||||
$this->request = $request;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
final public function getRequest() {
|
|
||||||
return $this->request;
|
|
||||||
}
|
|
||||||
|
|
||||||
final public static function getAllHandlers() {
|
|
||||||
return id(new PhutilClassMapQuery())
|
|
||||||
->setAncestorClass(__CLASS__)
|
|
||||||
->execute();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorAuthLinkMessageType
|
||||||
|
extends PhabricatorAuthMessageType {
|
||||||
|
|
||||||
|
const MESSAGEKEY = 'auth.link';
|
||||||
|
|
||||||
|
public function getDisplayName() {
|
||||||
|
return pht('Unlinked Account Instructions');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getShortDescription() {
|
||||||
|
return pht(
|
||||||
|
'Guidance shown after a user logs in with an email link and is '.
|
||||||
|
'prompted to link an external account.');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -161,7 +161,7 @@ abstract class PhabricatorAuthProvider extends Phobject {
|
|||||||
abstract public function processLoginRequest(
|
abstract public function processLoginRequest(
|
||||||
PhabricatorAuthLoginController $controller);
|
PhabricatorAuthLoginController $controller);
|
||||||
|
|
||||||
public function buildLinkForm(PhabricatorAuthLinkController $controller) {
|
public function buildLinkForm($controller) {
|
||||||
return $this->renderLoginForm($controller->getRequest(), $mode = 'link');
|
return $this->renderLoginForm($controller->getRequest(), $mode = 'link');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,9 +220,7 @@ abstract class PhabricatorAuthProvider extends Phobject {
|
|||||||
$adapter->getAdapterDomain(),
|
$adapter->getAdapterDomain(),
|
||||||
$account_id);
|
$account_id);
|
||||||
if (!$account) {
|
if (!$account) {
|
||||||
$account = id(new PhabricatorExternalAccount())
|
$account = $this->newExternalAccount()
|
||||||
->setAccountType($adapter->getAdapterType())
|
|
||||||
->setAccountDomain($adapter->getAdapterDomain())
|
|
||||||
->setAccountID($account_id);
|
->setAccountID($account_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,8 +297,18 @@ abstract class PhabricatorAuthProvider extends Phobject {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDefaultExternalAccount() {
|
public function newDefaultExternalAccount() {
|
||||||
throw new PhutilMethodNotImplementedException();
|
return $this->newExternalAccount();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function newExternalAccount() {
|
||||||
|
$config = $this->getProviderConfig();
|
||||||
|
$adapter = $this->getAdapter();
|
||||||
|
|
||||||
|
return id(new PhabricatorExternalAccount())
|
||||||
|
->setAccountType($adapter->getAdapterType())
|
||||||
|
->setAccountDomain($adapter->getAdapterDomain())
|
||||||
|
->setProviderConfigPHID($config->getPHID());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLoginOrder() {
|
public function getLoginOrder() {
|
||||||
@@ -311,6 +319,12 @@ abstract class PhabricatorAuthProvider extends Phobject {
|
|||||||
return 'Generic';
|
return 'Generic';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function newIconView() {
|
||||||
|
return id(new PHUIIconView())
|
||||||
|
->setSpriteSheet(PHUIIconView::SPRITE_LOGIN)
|
||||||
|
->setSpriteIcon($this->getLoginIcon());
|
||||||
|
}
|
||||||
|
|
||||||
public function isLoginFormAButton() {
|
public function isLoginFormAButton() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -432,12 +446,13 @@ abstract class PhabricatorAuthProvider extends Phobject {
|
|||||||
|
|
||||||
$uri = $attributes['uri'];
|
$uri = $attributes['uri'];
|
||||||
$uri = new PhutilURI($uri);
|
$uri = new PhutilURI($uri);
|
||||||
$params = $uri->getQueryParams();
|
$params = $uri->getQueryParamsAsPairList();
|
||||||
$uri->setQueryParams(array());
|
$uri->removeAllQueryParams();
|
||||||
|
|
||||||
$content = array($button);
|
$content = array($button);
|
||||||
|
|
||||||
foreach ($params as $key => $value) {
|
foreach ($params as $pair) {
|
||||||
|
list($key, $value) = $pair;
|
||||||
$content[] = phutil_tag(
|
$content[] = phutil_tag(
|
||||||
'input',
|
'input',
|
||||||
array(
|
array(
|
||||||
|
|||||||
@@ -47,6 +47,14 @@ final class PhabricatorFacebookAuthProvider
|
|||||||
return 'Facebook';
|
return 'Facebook';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function getContentSecurityPolicyFormActions() {
|
||||||
|
return array(
|
||||||
|
// See T13254. After login with a mobile device, Facebook may redirect
|
||||||
|
// to the mobile site.
|
||||||
|
'https://m.facebook.com/',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function readFormValuesFromProvider() {
|
public function readFormValuesFromProvider() {
|
||||||
$require_secure = $this->getProviderConfig()->getProperty(
|
$require_secure = $this->getProviderConfig()->getProperty(
|
||||||
self::KEY_REQUIRE_SECURE);
|
self::KEY_REQUIRE_SECURE);
|
||||||
@@ -114,15 +122,4 @@ final class PhabricatorFacebookAuthProvider
|
|||||||
return parent::renderConfigPropertyTransactionTitle($xaction);
|
return parent::renderConfigPropertyTransactionTitle($xaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getFacebookApplicationID() {
|
|
||||||
$providers = PhabricatorAuthProvider::getAllProviders();
|
|
||||||
$fb_provider = idx($providers, 'facebook:facebook.com');
|
|
||||||
if (!$fb_provider) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $fb_provider->getProviderConfig()->getProperty(
|
|
||||||
self::PROPERTY_APP_ID);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ final class PhabricatorLDAPAuthProvider extends PhabricatorAuthProvider {
|
|||||||
id(new AphrontFormTextControl())
|
id(new AphrontFormTextControl())
|
||||||
->setLabel(pht('LDAP Username'))
|
->setLabel(pht('LDAP Username'))
|
||||||
->setName('ldap_username')
|
->setName('ldap_username')
|
||||||
|
->setAutofocus(true)
|
||||||
->setValue($v_user)
|
->setValue($v_user)
|
||||||
->setError($e_user))
|
->setError($e_user))
|
||||||
->appendChild(
|
->appendChild(
|
||||||
|
|||||||
@@ -159,8 +159,7 @@ final class PhabricatorPasswordAuthProvider extends PhabricatorAuthProvider {
|
|||||||
return $dialog;
|
return $dialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildLinkForm(
|
public function buildLinkForm($controller) {
|
||||||
PhabricatorAuthLinkController $controller) {
|
|
||||||
throw new Exception(pht("Password providers can't be linked."));
|
throw new Exception(pht("Password providers can't be linked."));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,6 +255,7 @@ final class PhabricatorPasswordAuthProvider extends PhabricatorAuthProvider {
|
|||||||
id(new AphrontFormTextControl())
|
id(new AphrontFormTextControl())
|
||||||
->setLabel(pht('Username or Email'))
|
->setLabel(pht('Username or Email'))
|
||||||
->setName('username')
|
->setName('username')
|
||||||
|
->setAutofocus(true)
|
||||||
->setValue($v_user)
|
->setValue($v_user)
|
||||||
->setError($e_user))
|
->setError($e_user))
|
||||||
->appendChild(
|
->appendChild(
|
||||||
@@ -385,14 +385,6 @@ final class PhabricatorPasswordAuthProvider extends PhabricatorAuthProvider {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDefaultExternalAccount() {
|
|
||||||
$adapter = $this->getAdapter();
|
|
||||||
|
|
||||||
return id(new PhabricatorExternalAccount())
|
|
||||||
->setAccountType($adapter->getAdapterType())
|
|
||||||
->setAccountDomain($adapter->getAdapterDomain());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function willSaveAccount(PhabricatorExternalAccount $account) {
|
protected function willSaveAccount(PhabricatorExternalAccount $account) {
|
||||||
parent::willSaveAccount($account);
|
parent::willSaveAccount($account);
|
||||||
$account->setUserPHID($account->getAccountID());
|
$account->setUserPHID($account->getAccountID());
|
||||||
|
|||||||
@@ -6,11 +6,7 @@ final class PhabricatorAuthProviderConfigQuery
|
|||||||
private $ids;
|
private $ids;
|
||||||
private $phids;
|
private $phids;
|
||||||
private $providerClasses;
|
private $providerClasses;
|
||||||
|
private $isEnabled;
|
||||||
const STATUS_ALL = 'status:all';
|
|
||||||
const STATUS_ENABLED = 'status:enabled';
|
|
||||||
|
|
||||||
private $status = self::STATUS_ALL;
|
|
||||||
|
|
||||||
public function withPHIDs(array $phids) {
|
public function withPHIDs(array $phids) {
|
||||||
$this->phids = $phids;
|
$this->phids = $phids;
|
||||||
@@ -22,40 +18,26 @@ final class PhabricatorAuthProviderConfigQuery
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function withStatus($status) {
|
|
||||||
$this->status = $status;
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function withProviderClasses(array $classes) {
|
public function withProviderClasses(array $classes) {
|
||||||
$this->providerClasses = $classes;
|
$this->providerClasses = $classes;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getStatusOptions() {
|
public function withIsEnabled($is_enabled) {
|
||||||
return array(
|
$this->isEnabled = $is_enabled;
|
||||||
self::STATUS_ALL => pht('All Providers'),
|
return $this;
|
||||||
self::STATUS_ENABLED => pht('Enabled Providers'),
|
}
|
||||||
);
|
|
||||||
|
public function newResultObject() {
|
||||||
|
return new PhabricatorAuthProviderConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function loadPage() {
|
protected function loadPage() {
|
||||||
$table = new PhabricatorAuthProviderConfig();
|
return $this->loadStandardPage($this->newResultObject());
|
||||||
$conn_r = $table->establishConnection('r');
|
|
||||||
|
|
||||||
$data = queryfx_all(
|
|
||||||
$conn_r,
|
|
||||||
'SELECT * FROM %T %Q %Q %Q',
|
|
||||||
$table->getTableName(),
|
|
||||||
$this->buildWhereClause($conn_r),
|
|
||||||
$this->buildOrderClause($conn_r),
|
|
||||||
$this->buildLimitClause($conn_r));
|
|
||||||
|
|
||||||
return $table->loadAllFromArray($data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function buildWhereClause(AphrontDatabaseConnection $conn) {
|
protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {
|
||||||
$where = array();
|
$where = parent::buildWhereClauseParts($conn);
|
||||||
|
|
||||||
if ($this->ids !== null) {
|
if ($this->ids !== null) {
|
||||||
$where[] = qsprintf(
|
$where[] = qsprintf(
|
||||||
@@ -78,22 +60,27 @@ final class PhabricatorAuthProviderConfigQuery
|
|||||||
$this->providerClasses);
|
$this->providerClasses);
|
||||||
}
|
}
|
||||||
|
|
||||||
$status = $this->status;
|
if ($this->isEnabled !== null) {
|
||||||
switch ($status) {
|
$where[] = qsprintf(
|
||||||
case self::STATUS_ALL:
|
$conn,
|
||||||
break;
|
'isEnabled = %d',
|
||||||
case self::STATUS_ENABLED:
|
(int)$this->isEnabled);
|
||||||
$where[] = qsprintf(
|
|
||||||
$conn,
|
|
||||||
'isEnabled = 1');
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new Exception(pht("Unknown status '%s'!", $status));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$where[] = $this->buildPagingClause($conn);
|
return $where;
|
||||||
|
}
|
||||||
|
|
||||||
return $this->formatWhereClause($conn, $where);
|
protected function willFilterPage(array $configs) {
|
||||||
|
|
||||||
|
foreach ($configs as $key => $config) {
|
||||||
|
$provider = $config->getProvider();
|
||||||
|
if (!$provider) {
|
||||||
|
unset($configs[$key]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $configs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getQueryApplicationClass() {
|
public function getQueryApplicationClass() {
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ final class PhabricatorExternalAccountQuery
|
|||||||
private $userPHIDs;
|
private $userPHIDs;
|
||||||
private $needImages;
|
private $needImages;
|
||||||
private $accountSecrets;
|
private $accountSecrets;
|
||||||
|
private $providerConfigPHIDs;
|
||||||
|
|
||||||
public function withUserPHIDs(array $user_phids) {
|
public function withUserPHIDs(array $user_phids) {
|
||||||
$this->userPHIDs = $user_phids;
|
$this->userPHIDs = $user_phids;
|
||||||
@@ -62,6 +63,11 @@ final class PhabricatorExternalAccountQuery
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function withProviderConfigPHIDs(array $phids) {
|
||||||
|
$this->providerConfigPHIDs = $phids;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function newResultObject() {
|
public function newResultObject() {
|
||||||
return new PhabricatorExternalAccount();
|
return new PhabricatorExternalAccount();
|
||||||
}
|
}
|
||||||
@@ -71,6 +77,26 @@ final class PhabricatorExternalAccountQuery
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected function willFilterPage(array $accounts) {
|
protected function willFilterPage(array $accounts) {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
|
$configs = id(new PhabricatorAuthProviderConfigQuery())
|
||||||
|
->setViewer($viewer)
|
||||||
|
->withPHIDs(mpull($accounts, 'getProviderConfigPHID'))
|
||||||
|
->execute();
|
||||||
|
$configs = mpull($configs, null, 'getPHID');
|
||||||
|
|
||||||
|
foreach ($accounts as $key => $account) {
|
||||||
|
$config_phid = $account->getProviderConfigPHID();
|
||||||
|
$config = idx($configs, $config_phid);
|
||||||
|
|
||||||
|
if (!$config) {
|
||||||
|
unset($accounts[$key]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$account->attachProviderConfig($config);
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->needImages) {
|
if ($this->needImages) {
|
||||||
$file_phids = mpull($accounts, 'getProfileImagePHID');
|
$file_phids = mpull($accounts, 'getProfileImagePHID');
|
||||||
$file_phids = array_filter($file_phids);
|
$file_phids = array_filter($file_phids);
|
||||||
@@ -161,6 +187,13 @@ final class PhabricatorExternalAccountQuery
|
|||||||
$this->accountSecrets);
|
$this->accountSecrets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->providerConfigPHIDs !== null) {
|
||||||
|
$where[] = qsprintf(
|
||||||
|
$conn,
|
||||||
|
'providerConfigPHID IN (%Ls)',
|
||||||
|
$this->providerConfigPHIDs);
|
||||||
|
}
|
||||||
|
|
||||||
return $where;
|
return $where;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,35 +201,4 @@ final class PhabricatorExternalAccountQuery
|
|||||||
return 'PhabricatorPeopleApplication';
|
return 'PhabricatorPeopleApplication';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Attempts to find an external account and if none exists creates a new
|
|
||||||
* external account with a shiny new ID and PHID.
|
|
||||||
*
|
|
||||||
* NOTE: This function assumes the first item in various query parameters is
|
|
||||||
* the correct value to use in creating a new external account.
|
|
||||||
*/
|
|
||||||
public function loadOneOrCreate() {
|
|
||||||
$account = $this->executeOne();
|
|
||||||
if (!$account) {
|
|
||||||
$account = new PhabricatorExternalAccount();
|
|
||||||
if ($this->accountIDs) {
|
|
||||||
$account->setAccountID(reset($this->accountIDs));
|
|
||||||
}
|
|
||||||
if ($this->accountTypes) {
|
|
||||||
$account->setAccountType(reset($this->accountTypes));
|
|
||||||
}
|
|
||||||
if ($this->accountDomains) {
|
|
||||||
$account->setAccountDomain(reset($this->accountDomains));
|
|
||||||
}
|
|
||||||
if ($this->accountSecrets) {
|
|
||||||
$account->setAccountSecret(reset($this->accountSecrets));
|
|
||||||
}
|
|
||||||
if ($this->userPHIDs) {
|
|
||||||
$account->setUserPHID(reset($this->userPHIDs));
|
|
||||||
}
|
|
||||||
$account->save();
|
|
||||||
}
|
|
||||||
return $account;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ final class PhabricatorAuthChallenge
|
|||||||
protected $properties = array();
|
protected $properties = array();
|
||||||
|
|
||||||
private $responseToken;
|
private $responseToken;
|
||||||
|
private $isNewChallenge;
|
||||||
|
|
||||||
const HTTPKEY = '__hisec.challenges__';
|
const HTTPKEY = '__hisec.challenges__';
|
||||||
const TOKEN_DIGEST_KEY = 'auth.challenge.token';
|
const TOKEN_DIGEST_KEY = 'auth.challenge.token';
|
||||||
@@ -241,6 +242,15 @@ final class PhabricatorAuthChallenge
|
|||||||
return $this->properties[$key];
|
return $this->properties[$key];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function setIsNewChallenge($is_new_challenge) {
|
||||||
|
$this->isNewChallenge = $is_new_challenge;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getIsNewChallenge() {
|
||||||
|
return $this->isNewChallenge;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -( PhabricatorPolicyInterface )----------------------------------------- */
|
/* -( PhabricatorPolicyInterface )----------------------------------------- */
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,6 @@ final class PhabricatorAuthPasswordTransaction
|
|||||||
return PhabricatorAuthPasswordPHIDType::TYPECONST;
|
return PhabricatorAuthPasswordPHIDType::TYPECONST;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getApplicationTransactionCommentObject() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getBaseTransactionClass() {
|
public function getBaseTransactionClass() {
|
||||||
return 'PhabricatorAuthPasswordTransactionType';
|
return 'PhabricatorAuthPasswordTransactionType';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,6 +83,27 @@ final class PhabricatorAuthProviderConfig
|
|||||||
return $this->provider;
|
return $this->provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getURI() {
|
||||||
|
return '/auth/config/view/'.$this->getID().'/';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getObjectName() {
|
||||||
|
return pht('Auth Provider %d', $this->getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDisplayName() {
|
||||||
|
return $this->getProvider()->getProviderName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getSortVector() {
|
||||||
|
return id(new PhutilSortVector())
|
||||||
|
->addString($this->getDisplayName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function newIconView() {
|
||||||
|
return $this->getProvider()->newIconView();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -( PhabricatorApplicationTransactionInterface )------------------------- */
|
/* -( PhabricatorApplicationTransactionInterface )------------------------- */
|
||||||
|
|
||||||
|
|||||||
@@ -33,10 +33,6 @@ final class PhabricatorAuthProviderConfigTransaction
|
|||||||
return PhabricatorAuthAuthProviderPHIDType::TYPECONST;
|
return PhabricatorAuthAuthProviderPHIDType::TYPECONST;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getApplicationTransactionCommentObject() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getIcon() {
|
public function getIcon() {
|
||||||
$old = $this->getOldValue();
|
$old = $this->getOldValue();
|
||||||
$new = $this->getNewValue();
|
$new = $this->getNewValue();
|
||||||
|
|||||||
@@ -15,10 +15,6 @@ final class PhabricatorAuthSSHKeyTransaction
|
|||||||
return PhabricatorAuthSSHKeyPHIDType::TYPECONST;
|
return PhabricatorAuthSSHKeyPHIDType::TYPECONST;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getApplicationTransactionCommentObject() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getTitle() {
|
public function getTitle() {
|
||||||
$author_phid = $this->getAuthorPHID();
|
$author_phid = $this->getAuthorPHID();
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
final class PhabricatorAuthChallengeUpdate
|
||||||
|
extends Phobject {
|
||||||
|
|
||||||
|
private $retry = false;
|
||||||
|
private $state;
|
||||||
|
private $markup;
|
||||||
|
|
||||||
|
public function setRetry($retry) {
|
||||||
|
$this->retry = $retry;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getRetry() {
|
||||||
|
return $this->retry;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setState($state) {
|
||||||
|
$this->state = $state;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getState() {
|
||||||
|
return $this->state;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setMarkup($markup) {
|
||||||
|
$this->markup = $markup;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMarkup() {
|
||||||
|
return $this->markup;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function newContent() {
|
||||||
|
return array(
|
||||||
|
'retry' => $this->getRetry(),
|
||||||
|
'state' => $this->getState(),
|
||||||
|
'markup' => $this->getMarkup(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -108,11 +108,11 @@ final class PhabricatorBadgesQuery
|
|||||||
) + parent::getOrderableColumns();
|
) + parent::getOrderableColumns();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getPagingValueMap($cursor, array $keys) {
|
|
||||||
$badge = $this->loadCursorObject($cursor);
|
protected function newPagingMapFromPartialObject($object) {
|
||||||
return array(
|
return array(
|
||||||
'quality' => $badge->getQuality(),
|
'id' => (int)$object->getID(),
|
||||||
'id' => $badge->getID(),
|
'quality' => $object->getQuality(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -608,6 +608,7 @@ abstract class PhabricatorController extends AphrontController {
|
|||||||
$this->setCurrentApplication($application);
|
$this->setCurrentApplication($application);
|
||||||
|
|
||||||
$controller = new LegalpadDocumentSignController();
|
$controller = new LegalpadDocumentSignController();
|
||||||
|
$controller->setIsSessionGate(true);
|
||||||
return $this->delegateToController($controller);
|
return $this->delegateToController($controller);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user