Merge pull request #22169 from demeritcowboy/oauth-dropdown
[civicrm-core.git] / ext / oauth-client / Civi / Api4 / OAuthProvider.php
CommitLineData
3ee128fb
TO
1<?php
2
3namespace Civi\Api4;
4
5use Civi\Core\Event\GenericHookEvent;
6use Civi\OAuth\CiviGenericProvider;
7
8class OAuthProvider extends Generic\AbstractEntity {
9
10 const TTL = 600;
11
12 /**
13 * @param bool $checkPermissions
14 * @return Generic\BasicGetAction
15 */
16 public static function get($checkPermissions = TRUE) {
17 $action = new Generic\BasicGetAction('OAuthProvider', __FUNCTION__, function () {
2752428e 18 $cache = \Civi::cache('long');
3ee128fb
TO
19 if (!$cache->has('OAuthProvider_list')) {
20 $providers = [];
21 $event = GenericHookEvent::create([
22 'providers' => &$providers,
23 ]);
24 \Civi::dispatcher()->dispatch('hook_civicrm_oauthProviders', $event);
25
26 foreach ($providers as $name => &$provider) {
27 if ($provider['name'] !== $name) {
28 throw new \API_Exception(sprintf("Mismatched OAuth provider names: \"%s\" vs \"%s\"",
29 $provider['name'], $name));
30 }
31 if (!isset($provider['class'])) {
32 $provider['class'] = CiviGenericProvider::class;
33 }
34 }
35
36 $cache->set('OAuthProvider_list', $providers, self::TTL);
37 }
38 return $cache->get('OAuthProvider_list');
39 });
40 return $action->setCheckPermissions($checkPermissions);
41 }
42
43 /**
44 * @param bool $checkPermissions
45 * @return Generic\BasicGetFieldsAction
46 */
47 public static function getFields($checkPermissions = TRUE) {
48 $action = new Generic\BasicGetFieldsAction('OAuthProvider', __FUNCTION__, function () {
49 return [
50 [
51 'name' => 'name',
52 ],
53 [
54 'name' => 'title',
55 ],
56 [
57 'name' => 'class',
58 ],
59 [
60 'name' => 'options',
61 ],
60a62215
CW
62 [
63 'name' => 'contactTemplate',
64 ],
8face145 65 [
66 'name' => 'mailSettingsTemplate',
67 ],
3ee128fb
TO
68 ];
69 });
70 return $action->setCheckPermissions($checkPermissions);
71 }
72
73 /**
74 * @return array
75 */
76 public static function permissions() {
77 return [
78 "meta" => ["access CiviCRM"],
79 "get" => ["access CiviCRM"],
80 "default" => ["administer CiviCRM"],
81 ];
82 }
83
84}