public function onCreated(User $user) { if (User::count() == 1 && !$user->isAdmin()) { $attrs = array('name' => 'Administrator'); $adminRole = Role::where($attrs)->first(); if (!$adminRole) { $adminRole = new Role($attrs); $adminRole->setUser($user); $adminRole->save(); } $user->roles()->attach($adminRole->id); } $user->setUser($user); }
/** * @testdox The first user to log in is made an Administrator, and can edit users' roles. */ public function firstUser() { // Start with 0 users. $this->assertEquals(0, User::count()); // Save a first user, and they should be made an admin. $user1 = new User(); $user1->username = '******'; $user1->save(); $this->assertTrue($user1->hasRole('Administrator')); $this->assertTrue($user1->isAdmin()); $this->assertEquals(1, User::count()); // Check that resaving the first user doesn't break this (like it was doing). $user1->username = '******'; $user1->save(); $this->assertTrue($user1->isAdmin()); $this->assertEquals(1, User::count()); // Save a second user, and they shouldn't be an admin. $user2 = new User(); $user2->username = '******'; $user2->save(); $this->assertFalse($user2->hasRole('Administrator')); $this->assertFalse($user2->isAdmin()); $this->assertTrue($user1->isAdmin()); $this->assertEquals(2, User::count()); }