Added get my member endpoint

Change-Id: Ia4f4ca968725496e8bd5d84d756e8a6addba9919
This commit is contained in:
Sebastian Marcet 2017-11-23 15:54:15 -03:00
parent ae8a7c030d
commit 19d968b85a
6 changed files with 68 additions and 2 deletions

View File

@ -1,5 +1,4 @@
<?php namespace App\Http\Controllers;
/**
* Copyright 2016 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
@ -18,6 +17,7 @@ use models\main\IMemberRepository;
use models\oauth2\IResourceServerContext;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Validator;
use ModelSerializers\SerializerRegistry;
use utils\Filter;
use utils\FilterParser;
use utils\FilterParserException;
@ -139,4 +139,28 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController
}
}
public function getMyMember(){
$current_member_id = $this->resource_server_context->getCurrentUserExternalId();
if (is_null($current_member_id)) return $this->error403();
$current_member = $this->repository->getById($current_member_id);
if (is_null($current_member)) return $this->error404();
$fields = Request::input('fields', null);
$relations = Request::input('relations', null);
return $this->ok
(
SerializerRegistry::getInstance()->getSerializer($current_member, SerializerRegistry::SerializerType_Private)
->serialize
(
Request::input('expand', ''),
is_null($fields) ? [] : explode(',', $fields),
is_null($relations) ? [] : explode(',', $relations)
)
);
}
}

View File

@ -87,7 +87,8 @@ Route::group([
Route::get('', 'OAuth2MembersApiController@getMembers');
Route::group(['prefix'=>'me'], function(){
// get my member info
Route::get('', 'OAuth2MembersApiController@getMyMember');
// invitations
Route::group(['prefix'=>'team-invitations'], function(){
Route::get('', 'OAuth2TeamInvitationsApiController@getMyInvitations');

View File

@ -440,6 +440,17 @@ class ApiEndpointsSeeder extends Seeder
)
]
);
$this->seedApiEndpoints('members', [
// members
array(
'name' => 'get-my-member',
'route' => '/api/v1/members/me',
'http_method' => 'GET',
'scopes' => [sprintf('%s/members/read/me', $current_realm)],
)
]
);
}
private function seedTeamEndpoints(){

View File

@ -128,6 +128,11 @@ final class ApiScopesSeeder extends Seeder
'short_description' => 'Get Members Data',
'description' => 'Grants read only access for Members Data',
),
array(
'name' => sprintf('%s/members/read/me', $current_realm),
'short_description' => 'Get My Member Data',
'description' => 'Grants read only access for My Member',
),
array(
'name' => sprintf('%s/members/invitations/read', $current_realm),
'short_description' => 'Allows read only access to invitations',

View File

@ -88,4 +88,27 @@ final class OAuth2MembersApiTest extends ProtectedApiTest
$this->assertTrue(!is_null($members));
$this->assertResponseStatus(200);
}
public function testGetMyMember()
{
$params = [
'expand' => 'groups'
];
$headers = array("HTTP_Authorization" => " Bearer " . $this->access_token);
$response = $this->action(
"GET",
"OAuth2MembersApiController@getMyMember",
$params,
array(),
array(),
array(),
$headers
);
$content = $response->getContent();
$member = json_decode($content);
$this->assertTrue(!is_null($member));
$this->assertResponseStatus(200);
}
}

View File

@ -49,6 +49,7 @@ class AccessTokenServiceStub implements IAccessTokenService
$url . '/me/read',
$url . '/summits/read-notifications',
$url . '/members/read',
$url . '/members/read/me',
$url . '/members/invitations/read',
$url . '/members/invitations/write',
$url . '/teams/read',
@ -91,6 +92,7 @@ class AccessTokenServiceStub2 implements IAccessTokenService
$url . '/me/read',
$url . '/summits/read-notifications',
$url . '/members/read',
$url . '/members/read/me',
$url . '/members/invitations/read',
$url . '/members/invitations/write',
$url . '/teams/read',