Active Directory account creation using php

Various PHP Scripts
Post Reply
thockman
Site Admin
Posts: 104
Joined: Thu Dec 15, 2005 5:51 pm
Location: Kansas City
Contact:

Active Directory account creation using php

Post by thockman » Thu Dec 15, 2005 11:01 pm

This is a script I wrote to help automate the AD account creation. It does most except create the home folder and share. Because it is on Linux I just let the logon script check if this is the first logon and have a vbscript the creates the share at logon.

Code: Select all

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<link rel="stylesheet" href="style.css" type="text/css" />
<head></head>
</body>
<?php
// This script will help in the process of creating Windows AD accounts
// Modify as needed.  Hopefully it will help.


// Variables
$dbhost = "host";
$dbuser = "user";
$dbpass = "pass";
$db = "db";
$ldapsrv = "xxx.xxx.xxx.xxx";

// Get form variables.
$action = $_REQUEST['action'];
$reqstar = "<font color='red'>*</font>";
$id = $_REQUEST['id'];

// First check to see if an account has been submitted from HR.
// Replace as needed
$link = mysql_connect($dbhost, $dbuser, $dbpass) or die('Could not connect: ' . mysql_error());
mysql_select_db($db) or die('Could not select database');
$query = 'SELECT * FROM accounts where acct_id = '.$id;
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$num = mysql_numrows($result);
$i = 0;
while ($i < $num) {
    $id = mysql_result($result,$i,"acct_id");
    $empid = mysql_result($result,$i,"emp_id");
        $empfname = mysql_result($result,$i,"emp_fname");
        $emplname = mysql_result($result,$i,"emp_lname");
        $empdept = mysql_result($result,$i,"emp_dept");
        $emptitle = mysql_result($result,$i,"emp_title");
        $empmanager = mysql_result($result,$i,"emp_man");
        $empphone = mysql_result($result,$i,"emp_phone");
        $emphdate = mysql_result($result,$i,"emp_hdate");
        $empacttype = mysql_result($result,$i,"emp_acttype");
        //echo "<td><a href='adduser.php?id=".$id."'>".$id."</td></tr>";
        $i++;
}
mysql_free_result($result);
mysql_close($link);

// Main
if ($action=="Cancel") {
        ?><center>It appears you have selected Cancel.<br />Thanks for stopping by and have a great day :)<br />
    <a href="JavaScript:window.close()">Close this window</a></center>
    <?php
    exit();
}
if ($action=="Submit"){
    $authname = $_REQUEST['authname'];
    $authname_req = is_required($authname);
    $authpass = $_REQUEST['authpass'];
    $authpass_req = is_required($authpass);
    $empid = $_REQUEST['empid'];
    $empid_req = is_required($empid);
    $empfname = $_REQUEST['empfname'];
    $empfname_req = is_required($empfname);
    $emplname = $_REQUEST['emplname'];
    $emplname_req = is_required($emplname);
    $empdept = $_REQUEST['empdept'];
    $empdept_req = is_required($empdept);
    $emptitle = $_REQUEST['emptitle'];
    $emptitle_req = is_required($emptitle);
    $empmanager = $_REQUEST['empmanager'];
    $empmanager_req = is_required($empmanager);
    $empphone = $_REQUEST['empphone'];
    $emphdate = $_REQUEST['emphdate'];
    $emphdate_req = is_required($emphdate);
    $empemail = $_REQUEST['empemail'];
    $empuname = strtolower(substr($empfname,0,1)."".substr($emplname,0,7));
    $empinitials = strtolower(substr($empfname,0,1))."".strtolower(substr($emplname,0,1));
    if ($authname and $authpass and $empfname and $emplname and $empdept and $emphdate and $emptitle and $empmanager) {
        $adduserAD["cn"][0] = $empfname." ".$emplname;
        $adduserAD["samaccountname"][0] = $empuname;
        $adduserAD["objectclass"][0] = "top";
        $adduserAD["objectclass"][1] = "person";
        $adduserAD["objectclass"][2] = "organizationalPerson";
        $adduserAD["objectclass"][3] = "user";
        $adduserAD["displayname"][0] = $empfname." ".$emplname;
        $adduserAD["name"][0] = $empfname." ".$emplname;
        $adduserAD["givenname"][0] = $empfname;
        $adduserAD["sn"] = $emplname;
        $adduserAD["company"][0] = "Example";
        $adduserAD["department"][0] = $empdept;
        $adduserAD["title"][0] = $emptitle;
        $adduserAD["description"][0] = $emptitle;
        $adduserAD["initials"][0] = $empinitials;
        $adduserAD["userprincipalname"][0] = $empuname."@example.com";
        $adduserAD["homeDirectory"][0] = "\\\\Fileserver\\".$empuname."$";
        $adduserAD["homeDrive"][0] = "H";
        $adduserAD["facsimileTelephoneNumber"][0] = "(000) 000-0000";
        $adduserAD["employeeid"][0] = $empid;
        // If email is needed create mailbox.  Use ADSI to get your information.
        if ($empemail){
            $adduserAD["homeMDB"][0] = "CN=Mailbox Store (exampleservername),CN=First Storage Group,CN=InformationStore,CN=exampleServerName,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=CompanyName,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=example,DC=com";
            $adduserAD["homeMTA"][0] = "CN=Microsoft MTA,CN=exampleservername,CN=Servers,CN=First Administrative Group,CN=Administrative Groups,CN=examplecompany,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=example,DC=com";
            $adduserAD["mail"][0] = $empfname."".$emplname."@example.com";
            $adduserAD["legacyExchangeDN"][0] = "/o=Example/ou=First Administrative Group/cn=Recipients/cn=".$empuname;
                    $adduserAD["mailNickname"][0] = $empuname;
                    $adduserAD["msExchHomeServerName"][0] = "/o=Example/ou=First Administrative Group/cn=Configuration/cn=Servers/cn=exampleservername";
        }
        $adduserAD["l"][0] = "City";
        $adduserAD["physicalDeliveryOfficeName"][0] = "Admin";
        $adduserAD["streetAddress"][0] = "1234 Someroad";
        $adduserAD["st"][0] = "MO";
        $adduserAD["postalCode"][0] = "11111";
        $adduserAD["c"][0] = "US";
        $adduserAD["co"][0] = "United States";
        $adduserAD["countryCode"][0] = "840";
        if ($empphone){
            $adduserAD["telephoneNumber"][0] = $empphone;
        } else {
            $adduserAD["telephoneNumber"][0] = "(000) 000-0000";
        }
        $adduserAD["userAccountControl"][0] = "512";
        //$adduserAD["WWWHomePage"][0] = "";
        if (!($ldap = ldap_connect($ldapsrv))) { die("Could not connect to LDAP server");}
        if (!($res = @ldap_bind($ldap, $authname."@example.com", $authpass))) {
            die("Could not bind to the LDAP account<br>Please check username and password.");
        }
        $emploc = "CN=".$empfname." ".$emplname.",OU=Users,OU=".$empdept.",DC=example,DC=com";
        if (!(ldap_add($ldap, $emploc, $adduserAD))){
             echo "There is a problem to create the account<br>";
             echo "Please contact your administrator !";
             cleanup($ldap);
             exit();
        } else {
            $link = mysql_connect($dbhost, $dbuser, $dbpass) or die('Could not connect: ' . mysql_error());
            mysql_select_db($db) or die('Could not select database');
            $query = 'delete FROM accounts where acct_id = '.$id;
            $result = mysql_query($query) or die('Query failed: ' . mysql_error());
            mysql_free_result($result);
            mysql_close($link);
            $empmanemail = str_replace(" ","",$empmanager)."@example.com";
            echo "It appears the account was created.  :-)";
            $to = " admin@example.com ,".$empmanemail;
            $subject = "New Employee Information";
            $body = "Account created for:: ".$empfname." ".$emplname.
                        "\nEmployee ID: ".$empid.
                        "\nName: ".$empfname." ".$emplname.
            "\nUserName: ".$empuname.
            "\nPassword: ".$empinitials."".substr($emphdate,0,2)."".substr($emphdate,-4,2).
                        "\nDepartment: ".$empdept.
                        "\nTitle: ".$emptitle.
                        "\nManager: ".$empmanager.
                        "\nPhone: ".$empphone.
                        "\nHire Date: ".$emphdate.
                        "\nEmail: ".$empfname."".$emplname."@example.com";
            $extra = "From: NetworkAdmin";
            if (mail($to, $subject, $body, $extra)) {
                echo("<p>Message sent!<br></p>");
            } else {
                echo("<p>Message delivery failed...</p>");
            }
        }
        cleanup($ldap);
        ?><a href="JavaScript:window.close()">Close this window</a><?php
        exit();
    }
}
?>
<script language="JavaScript">
window.onload = function()
{
        var inputCollection = document.getElementsByTagName("input");
        for(var i = 0; i < inputCollection.length; i++)
                {
                var controlType = inputCollection[i].getAttribute('type');
                if(controlType.toLowerCase() == 'text')
                        {
                        inputCollection[i].focus();
                        return;
                }
        }
}
</script>
<center>
<form name="netacct" action="adduser.php?id=<?php echo $id; ?>" method="post">
<table border="6">
<tr><th colspan="3"><b>Create Network Account...</b></th></tr>
<tr><td>My Username:</td><td><input type="text" name="authname" value="<?php echo $authname; ?>"></td><td><?php echo $reqstar." ".$authname_req; ?></td></tr>
<tr><td>My Password:</td><td><input type="password" name="authpass" value="<?php echo $authpass; ?>"></td><td><?php echo $reqstar." ".$authpass_req; ?></td></tr>
<tr><td>Employee ID: </td><td><input type="text" name="empid" value="<?php echo $empid; ?>"></td><td><?php echo $reqstar." ".$empid_req; ?></td></tr>
<tr><td>First Name: </td><td><input type="text" name="empfname" value="<?php echo $empfname; ?>"></td><td><?php echo $reqstar." ".$empfname_req; ?></td></tr>
<tr><td>Last Name: </td><td><input type="text" name="emplname" value="<?php echo $emplname; ?>"></td><td><?php echo $reqstar." ".$emplname_req; ?></td></tr>
<tr><td>Department: </td><td><select name="empdept">
        <option value="<?php echo $empdept; ?>" selected><?php echo $empdept; ?></option>
        <option value="Accounting">Accounting</option>
        <option value="Administration">Administration</option>
        </select></td><td><?php echo $reqstar." ".$empdept_req; ?>
</td></tr>
<tr><td>Title: </td><td><input type="text" name="emptitle" value="<?php echo $emptitle; ?>"></td><td><?php echo $reqstar." ".$emptitle_req; ?></td></tr>
<tr><td>Manager/Supervisor: </td><td><select name="empmanager">
        <option value="<?php echo $empmanager; ?>" selected><?php echo $empmanager; ?></option>
        <option value="Manager 1">Manager 1</option>
        <option value="Manager 2">Manager 2</option>
        </select></td><td><?php echo $reqstar." ".$empmanager_req; ?></td></tr>
<tr><td>Phone: </td><td><input type="text" name="empphone"></td></td><td></tr>
<tr><td>Hire Date: </td>
<td><input type="text" name="emphdate" value="<?php echo $emphdate; ?>"></td><td><?php echo $reqstar." ".$emphdate_req; ?></td></tr>
<tr><td>Email: </td><td><input type="checkbox" name="empemail" value="true"></td><td></td></tr>
<tr><td><font color="red">* = Required</font></td>
<td><input type="submit" name="action" value="Submit"><input type="submit" name="action" value="Cancel"></td></tr>
</table>
</form>
</center>
</body>
<?php

// Function for required.
function is_required($fieldname){
        if (!$fieldname){
                return " <font color='red'>Is Required</font>";
        } else {
                return " <img src='imgs/ok.png'>";
        }
}

// Function for cleanup
function cleanup($ldap){
    ldap_unbind($ldap);
}
?>
Image

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest