protected function createGroups() { // create dummy groups $blogger = Group::create(array('name' => 'blogger', 'permissions' => array('blog.list' => 1, 'blog.create' => 1, 'blog.edit' => 1, 'blog.delete' => -1))); $artist = Group::create(array('name' => 'artist', 'permissions' => array('blog.list' => -1, 'art.create' => 1, 'art.edit' => 1, 'art.delete' => -1))); $moderator = Group::create(array('name' => 'moderator', 'permissions' => array('blog.list' => -1, 'art.create' => 1, 'art.edit' => 1, 'art.delete' => -1))); }
/** * handle group creation logic * * @param Validator $validator * @param Dispatcher $dispatcher * @param Group $group * @return CommandResult */ public function handle(Validator $validator, Dispatcher $dispatcher, Group $group) { // check user permission if (!$this->disablePermissionChecking) { if (!$this->user->hasAnyPermission(['user.manage'])) { return new CommandResult(false, CommandResult::$responseForbiddenMessage, null, 403); } } // validate data $validationResult = $validator->make(array('name' => $this->name, 'permissions' => $this->permissions), Group::$rules); if ($validationResult->fails()) { return new CommandResult(false, $validationResult->getMessageBag()->first(), null, 400); } // prepare data to be store $groupToBeCreated = array('name' => $this->name, 'permissions' => $this->transform($this->permissions)); // fire creating $dispatcher->fire('group.creating', array($groupToBeCreated)); // create $createdGroup = $group->create($groupToBeCreated); if (!$createdGroup) { return new CommandResult(false, "Failed to create user.", null, 400); } // fire created user $dispatcher->fire('group.created', array($createdGroup)); // return response return new CommandResult(true, "Group successfully created.", $createdGroup, 201); }
protected function createDummyUserAndGroup() { $blogger = Group::create(array('name' => 'blogger', 'permissions' => array('blog.list' => -1, 'art.create' => 1, 'art.edit' => 1, 'art.delete' => -1))); $user = User::create(array('first_name' => 'jane', 'last_name' => 'stark', 'email' => '*****@*****.**', 'password' => 'pass$jane', 'permissions' => array('blog.create' => 0, 'forum.create' => 0))); $user->groups()->attach($blogger); return array('blogger' => $blogger, 'user' => $user); }
public function testShouldUpdate() { // create user and logged in (the user who will perform the action) $user = User::create(array('first_name' => 'darryl', 'email' => '*****@*****.**', 'password' => 'pass$darryl', 'permissions' => array('superuser' => 1))); $this->application['auth']->loginUsingId($user->id); // create the group that we will be updating $blogger = Group::create(array('name' => 'blogger', 'permissions' => array('blog.list' => 1, 'blog.create' => 1, 'blog.edit' => 1, 'blog.delete' => -1))); // dummy request // we will update the blogger group that it will not be able to create a blog now $request = Request::create('', 'POST', array('id' => $blogger->id, 'name' => 'blogger-renamed', 'permissions' => array('blog.list' => 1, 'blog.create' => -1, 'blog.edit' => 1, 'blog.delete' => -1))); // begin $result = $this->commandDispatcher->dispatchFromArray('Darryldecode\\Backend\\Components\\User\\Commands\\UpdateGroupCommand', array('id' => $request->get('id', null), 'name' => $request->get('name', null), 'permissions' => $request->get('permissions', array()))); $this->assertTrue($result->isSuccessful(), 'Transaction should be successful.'); $this->assertEquals(200, $result->getStatusCode(), 'Status code should be 200.'); $this->assertEquals('Group successfully updated.', $result->getMessage()); // now prove it has been updated $updatedGroup = Group::find($result->getData()->id); //$this->assertEquals('blogger-renamed', $updatedGroup->name); $this->assertArrayHasKey('blog.list', $updatedGroup->getPermissionsAttribute(), 'Group permissions should have key blog.list'); $this->assertArrayHasKey('blog.create', $updatedGroup->getPermissionsAttribute(), 'Group permissions should have key blog.create'); $this->assertArrayHasKey('blog.edit', $updatedGroup->getPermissionsAttribute(), 'Group permissions should have key blog.edit'); $this->assertArrayHasKey('blog.delete', $updatedGroup->getPermissionsAttribute(), 'Group permissions should have key blog.delete'); $this->assertEquals(1, $updatedGroup->getPermissionsAttribute()['blog.list'], 'Permission blog.list should be allow'); $this->assertEquals(-1, $updatedGroup->getPermissionsAttribute()['blog.create'], 'Permission blog.create should be deny'); $this->assertEquals(1, $updatedGroup->getPermissionsAttribute()['blog.edit'], 'Permission blog.edit should be allow'); $this->assertEquals(-1, $updatedGroup->getPermissionsAttribute()['blog.delete'], 'Permission blog.delete should be deny'); }
protected function createUserAndLoggedIn() { $group = Group::create(array('name' => 'blogger', 'permissions' => array('superuser' => 1))); $user = User::create(array('first_name' => 'darryl', 'email' => '*****@*****.**', 'password' => 'pass$darryl', 'permissions' => array('blog.create' => 0, 'forum.create' => 0))); $user->groups()->attach($group); $this->application['auth']->loginUsingId($user->id); return $user; }
public function testQueryWithGroupId() { // create dummy groups $blogger = Group::create(array('name' => 'blogger', 'permissions' => array('blog.list' => 1, 'blog.create' => 1, 'blog.edit' => 1, 'blog.delete' => -1))); // create user and logged in (the user who will perform the action) $user = User::create(array('first_name' => 'dianne', 'last_name' => 'monte', 'email' => '*****@*****.**', 'password' => 'pass$dianne', 'permissions' => array('user.manage' => 1))); $user->groups()->attach($blogger); // logged in the user $this->application['auth']->loginUsingId($user->id); $this->createUsers(); // ---------------------- // begin query by group // ---------------------- $result = $this->commandDispatcher->dispatchFromArray('Darryldecode\\Backend\\Components\\User\\Commands\\QueryUsersCommand', array('firstName' => null, 'lastName' => null, 'email' => null, 'groupId' => $blogger->id, 'with' => array(), 'orderBy' => 'created_at', 'orderSort' => 'ASC', 'paginated' => true, 'perPage' => 15)); $this->assertTrue($result->isSuccessful()); $this->assertCount(1, $result->getData()->toArray()['data'], 'should only find 1 item'); $this->assertEquals('dianne', $result->getData()->first()->first_name, 'should only find 1 item'); }
protected function seedUser() { $group = \Darryldecode\Backend\Components\User\Models\Group::create(array('name' => 'Super User', 'permissions' => array('superuser' => 1))); $user = \Darryldecode\Backend\Components\User\Models\User::create(array('first_name' => 'John', 'last_name' => 'Doe', 'email' => '*****@*****.**', 'password' => 'admin', 'permissions' => array('superuser' => 1))); $user->groups()->attach($group); }
public function testUserInGroup() { $blogger = Group::create(array('name' => 'blogger', 'permissions' => array('blog.list' => 1, 'blog.create' => 1, 'blog.edit' => 1, 'blog.delete' => -1))); $artist = Group::create(array('name' => 'artist', 'permissions' => array('blog.list' => -1, 'art.create' => 1, 'art.edit' => 1, 'art.delete' => -1))); $user = User::create(array('first_name' => 'darryl', 'last_name' => 'Fernandez', 'email' => '*****@*****.**', 'password' => 'pass$darryl', 'permissions' => array('blog.create' => 0, 'forum.create' => 0))); $user->groups()->attach($blogger); $user->groups()->attach($artist); // by using the group object $this->assertTrue($user->inGroup($blogger)); // by using the group name $this->assertTrue($user->inGroup($blogger->name)); }
public function testShouldAssociateTheUserToTheGroupIfThereIsAnyProvided() { // create user and logged in $user = User::create(array('first_name' => 'darryl', 'email' => '*****@*****.**', 'password' => 'pass$darryl', 'permissions' => array('superuser' => 1))); $this->application['auth']->loginUsingId($user->id); // create dummy groups $blogger = Group::create(array('name' => 'blogger', 'permissions' => array('blog.list' => 1, 'blog.create' => 1, 'blog.edit' => 1, 'blog.delete' => -1))); $artist = Group::create(array('name' => 'artist', 'permissions' => array('blog.list' => -1, 'art.create' => 1, 'art.edit' => 1, 'art.delete' => -1))); $moderator = Group::create(array('name' => 'moderator', 'permissions' => array('blog.list' => -1, 'art.create' => 1, 'art.edit' => 1, 'art.delete' => -1))); // dummy request, required first name $request = Request::create('', 'GET', array('firstName' => 'Darryl', 'lastName' => 'Fernandez', 'email' => '*****@*****.**', 'password' => 'password', 'permissions' => array(), 'groups' => array($blogger->id, $artist->id))); // begin $result = $this->commandDispatcher->dispatchFrom('Darryldecode\\Backend\\Components\\User\\Commands\\CreateUserCommand', $request); $createdUser = User::find($result->getData()->id); $this->assertTrue($createdUser->inGroup($blogger), 'User should be in blogger group'); $this->assertTrue($createdUser->inGroup($artist), 'User should be in artist group'); $this->assertFalse($createdUser->inGroup($moderator), 'User should not be in moderator group'); }