Tigthen permissions + implement mocks for OAuth testing

* We are testing the OAuth final step
This commit is contained in:
Bofh 2021-11-25 20:49:55 +01:00
parent d9b0013329
commit 5282b5cabb
4 changed files with 38 additions and 2 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
.*.swp
*.mock
config/config.php

View File

@ -10,7 +10,7 @@ if ($instance === false) {
$app_name = conf('app_name', 'RealFan');
$site_name = conf('site_name', HOST_DEV);
$redirect_uris = conf('site_name', HOST_DEV).'/signup/mastodon:oauth';
$scopes = 'read write';
$scopes = 'read:accounts write';
# create the Authorization App
$ch = curl_init($instance.'/api/v1/apps');

View File

@ -1,11 +1,37 @@
<?php
# TODO: uncomment when done
if (false) {
$payload_fil = '/tmp/oauth-'.$ID;
if (!file_exists($payload_fil)) {
header('Location: /signup'); die;
}
$payload = json_decode(file_get_contents($payload_fil));
$ch = curl_init($payload->instance.'/oauth/token');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, [
'client_id' => $payload->result->client_id,
'client_secret' => $payload->result->client_secret,
'redirect_uri' => $payload->result->redirect_uri.'?id='.$ID,
'grant_type' => 'authorization_code',
'code' => $code
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$auth = curl_exec($ch);
curl_close($ch);
$auth = @json_decode($output);
}
# TODO: remove mock when done
$payload = json_decode(file_get_contents('/src/mock-payload.mock'));
$auth = json_decode(file_get_contents('/src/mock-auth.mock'));
$output = mastodon_get($payload->instance,
'/api/v1/accounts/verify_credentials', $auth->access_token);
var_dump($output);
echo '<br><br>';
var_dump($payload);
var_dump($code);
die;

View File

@ -70,3 +70,12 @@ function resolve_instance($txt) {
return 'https://'.$name;
}
function mastodon_get($instance, $path, $token) {
$ch = curl_init($instance.$path);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer '.$token]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
return @json_decode($output);
}