src/Security/DefaultAdminService.php
public function findOrCreateAdmin($email, $name = null)
    {
        $this->extend('beforeFindOrCreateAdmin', $email, $name);

        // Find member
        /** @var Member $admin */
        $admin = Member::get()
            ->filter('Email', $email)
            ->first();

        // Find or create admin group
        $adminGroup = $this->findOrCreateAdminGroup();

        // If no admin is found, create one
        if ($admin) {
            $inGroup = $admin->inGroup($adminGroup);
        } else {
            // Note: This user won't be able to login until a password is set
            // Set 'Email' to identify this as the default admin
            $inGroup = false;
            $admin = Member::create();
            $admin->FirstName = $name ?: $email;
            $admin->Email = $email;
            $admin->PasswordEncryption = 'none';
            $admin->write();
        }

        // Ensure this user is in an admin group
        if (!$inGroup) {
            // Add member to group instead of adding group to member
            // This bypasses the privilege escallation code in Member_GroupSet
            $adminGroup
                ->DirectMembers()
                ->add($admin);
        }

        $this->extend('afterFindOrCreateAdmin', $admin);

        return $admin;
    }
public function findOrCreateAdmin($email, $name = null)
    {
        $this->extend('beforeFindOrCreateAdmin', $email, $name);

        // Find member
        /** @var Member $admin */
        $admin = Member::get()
            ->filter('Email', $email)
            ->first();

        // Find or create admin group
        $adminGroup = $this->findOrCreateAdminGroup();

        // If no admin is found, create one
        if ($admin) {
            $inGroup = $admin->inGroup($adminGroup);
        } else {
            // Note: This user won't be able to login until a password is set
            // Set 'Email' to identify this as the default admin
            $inGroup = false;
            $admin = Member::create();
            $admin->FirstName = $name ?: $email;
            $admin->Email = $email;
            $admin->PasswordEncryption = 'none';
            $admin->write();
        }

        // Ensure this user is in an admin group
        if (!$inGroup) {
            // Add member to group instead of adding group to member
            // This bypasses the privilege escallation code in Member_GroupSet
            $adminGroup
                ->DirectMembers()
                ->add($admin);
        }

        $this->extend('afterFindOrCreateAdmin', $admin);

        return $admin;
    }
public function findOrCreateAdmin ( $ email , $ name = null ) { $ this -> extend ( 'beforeFindOrCreateAdmin' , $ email , $ name ) ; // Find member /** @var Member $admin */ $ admin = Member :: get ( ) -> filter ( 'Email' , $ email ) -> first ( ) ; // Find or create admin group $ adminGroup = $ this -> findOrCreateAdminGroup ( ) ; // If no admin is found, create one if ( $ admin ) { $ inGroup = $ admin -> inGroup ( $ adminGroup ) ; } else { // Note: This user won't be able to login until a password is set // Set 'Email' to identify this as the default admin $ inGroup = false ; $ admin = Member :: create ( ) ; $ admin -> FirstName = $ name ? : $ email ; $ admin -> Email = $ email ; $ admin -> PasswordEncryption = 'none' ; $ admin -> write ( ) ; } // Ensure this user is in an admin group if ( ! $ inGroup ) { // Add member to group instead of adding group to member // This bypasses the privilege escallation code in Member_GroupSet $ adminGroup -> DirectMembers ( ) -> add ( $ admin ) ; } $ this -> extend ( 'afterFindOrCreateAdmin' , $ admin ) ; return $ admin ; }
Find or create a Member with admin permissions

@skipUpgrade
@param string $email
@param string $name
@return Member
Find or create a Member with admin permissions