Update Get Members Endpoint Filters

Formerly was implicitly filtering by
Active = 1 AND EmailVerified=1
Changed to make those filters optional
* email_verified==1 or email_verified==0
* active==1 or active==0

Change-Id: If1864fe1618f93662a02ae8f8220159958ce7994
This commit is contained in:
Sebastian Marcet 2017-08-09 12:42:40 -03:00
parent 8433428ee4
commit 0888309234
5 changed files with 52 additions and 10 deletions

View File

@ -78,13 +78,15 @@ final class OAuth2MembersApiController extends OAuth2ProtectedController
if (Input::has('filter')) {
$filter = FilterParser::parse(Input::get('filter'), array
(
'irc' => ['=@', '=='],
'twitter' => ['=@', '=='],
'first_name' => ['=@', '=='],
'last_name' => ['=@', '=='],
'email' => ['=@', '=='],
'group_slug' => ['=@', '=='],
'group_id' => ['=='],
'irc' => ['=@', '=='],
'twitter' => ['=@', '=='],
'first_name' => ['=@', '=='],
'last_name' => ['=@', '=='],
'email' => ['=@', '=='],
'group_slug' => ['=@', '=='],
'group_id' => ['=='],
'email_verified' => ['=='],
'active' => ['=='],
));
}

View File

@ -32,6 +32,8 @@ class AbstractMemberSerializer extends SilverStripeSerializer
'TwitterHandle' => 'twitter:json_string',
'State' => 'state:json_string',
'Country' => 'country:json_string',
'Active' => 'active:json_boolean',
'EmailVerified' => 'email_verified:json_boolean',
];
protected static $allowed_relations = [

View File

@ -351,6 +351,14 @@ class Member extends SilverstripeBaseModel
return $this->email_verified;
}
/**
* @return bool
*/
public function getEmailVerified()
{
return $this->email_verified;
}
/**
* @param bool $email_verified
*/
@ -383,6 +391,14 @@ class Member extends SilverstripeBaseModel
return $this->active;
}
/**
* @return bool
*/
public function getActive()
{
return $this->active;
}
/**
* @param bool $active
*/

View File

@ -50,10 +50,8 @@ final class DoctrineMemberRepository extends SilverStripeDoctrineRepository impl
->createQueryBuilder()
->select("m")
->from(\models\main\Member::class, "m")
->where("m.active = 1")
->andWhere("m.first_name is not null")
->andWhere("m.last_name is not null")
->andWhere("m.email_verified = 1");
->andWhere("m.last_name is not null");
if(!is_null($filter)){
@ -75,6 +73,8 @@ final class DoctrineMemberRepository extends SilverStripeDoctrineRepository impl
'g',
"g.id :operator :value"
),
'email_verified' => 'm.email_verified:json_int',
'active' => 'm.active:json_int',
]);
}

View File

@ -66,4 +66,26 @@ final class OAuth2MembersApiTest extends ProtectedApiTest
$this->assertResponseStatus(200);
}
public function testGetMembersByEmail2()
{
$params = [
'filter' => ['email==sean.mcginnis@gmail.com', "email_verified==0"],
];
$headers = array("HTTP_Authorization" => " Bearer " . $this->access_token);
$response = $this->action(
"GET",
"OAuth2MembersApiController@getMembers",
$params,
array(),
array(),
array(),
$headers
);
$content = $response->getContent();
$members = json_decode($content);
$this->assertTrue(!is_null($members));
$this->assertResponseStatus(200);
}
}