2

Using below code I am able to create new user successfully. But if a user already exist it is not working. So how can I make run this code when user is not exist in my domain.

My code is

$dir = new Google_Service_Directory($client);

$user = new Google_Service_Directory_User();

$name = new Google_Service_Directory_UserName();

$firstname=$_POST['first_name'];

$familyname=$_POST['last_name'];

$primary_email= $firstname.'.'.$familyname.'@mydomainname.com';

$name->setGivenName($firstname);
$name->setFamilyName($familyname);
$user->setName($name);
$user->setHashFunction("SHA-1");
$user->setPrimaryEmail($primary_email);
$user->setPassword(hash("sha1","password"));

$result = $dir->users->insert($user);
echo "New user ".$result->primaryEmail." created successfully.";
Darren
  • 13,050
  • 4
  • 41
  • 79
Kishore Reddy
  • 147
  • 10

1 Answers1

0

Google does not directly offer a solution but you can do two things:

  1. try to look for your user in all the google users
  2. try to insert and catch an exception.

Looking for all users:

function userExists(Google_Service_Directory $dir, (string)$primary_email) : bool {
    $remoteUsers = $dir->users->listUsers(['domain' => 'mydomain']);
    foreach($remoteUsers as $remoteUser) {
        if((string)$remoteUser->primaryEmail == $primary_email) {
            return true;
        }
    }
    return false;
}

Catching:

try {
    $result = $dir->users->insert($user);
} catch (Google_Service_Exception $e) {
    $errors = $e->getErrors();
    foreach($errors as $error) {
        if($error['message'] == "Entity already exists.") {
            echo "Entity already exists.";
        }
    }
}
Mart
  • 475
  • 4
  • 21