Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/auth/adapter/PhutilSlackAuthAdapter.php
12256 views
1
<?php
2
3
/**
4
* Authentication adapter for Slack OAuth2.
5
*/
6
final class PhutilSlackAuthAdapter extends PhutilOAuthAuthAdapter {
7
8
public function getAdapterType() {
9
return 'Slack';
10
}
11
12
public function getAdapterDomain() {
13
return 'slack.com';
14
}
15
16
public function getAccountID() {
17
$user = $this->getOAuthAccountData('user');
18
return idx($user, 'id');
19
}
20
21
public function getAccountEmail() {
22
$user = $this->getOAuthAccountData('user');
23
return idx($user, 'email');
24
}
25
26
public function getAccountImageURI() {
27
$user = $this->getOAuthAccountData('user');
28
return idx($user, 'image_512');
29
}
30
31
public function getAccountRealName() {
32
$user = $this->getOAuthAccountData('user');
33
return idx($user, 'name');
34
}
35
36
protected function getAuthenticateBaseURI() {
37
return 'https://slack.com/oauth/authorize';
38
}
39
40
protected function getTokenBaseURI() {
41
return 'https://slack.com/api/oauth.access';
42
}
43
44
public function getScope() {
45
return 'identity.basic,identity.team,identity.avatar';
46
}
47
48
public function getExtraAuthenticateParameters() {
49
return array(
50
'response_type' => 'code',
51
);
52
}
53
54
protected function loadOAuthAccountData() {
55
return id(new PhutilSlackFuture())
56
->setAccessToken($this->getAccessToken())
57
->setRawSlackQuery('users.identity')
58
->resolve();
59
}
60
61
}
62
63