Created
December 22, 2018 03:15
-
-
Save scuba323/2e1dd5672d17b02b39e6d962a110ec3f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
<?php | |
function authenticate($user, $password) { | |
if(empty($user) || empty($password)) return false; | |
// active directory server | |
$ldap_host = "server.college.school.edu"; | |
// active directory DN (base location of ldap search) | |
$ldap_dn = "OU=Departments,DC=college,DC=school,DC=edu"; | |
// active directory user group name | |
$ldap_user_group = "WebUsers"; | |
// active directory manager group name | |
$ldap_manager_group = "WebManagers"; | |
// domain, for purposes of constructing $user | |
$ldap_usr_dom = '@college.school.edu'; | |
// connect to active directory | |
$ldap = ldap_connect($ldap_host); | |
// configure ldap params | |
ldap_set_option($ldap,LDAP_OPT_PROTOCOL_VERSION,3); | |
ldap_set_option($ldap,LDAP_OPT_REFERRALS,0); | |
// verify user and password | |
if($bind = @ldap_bind($ldap, $user.$ldap_usr_dom, $password)) { | |
// valid | |
// check presence in groups | |
$filter = "(sAMAccountName=".$user.")"; | |
$attr = array("memberof"); | |
$result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server"); | |
$entries = ldap_get_entries($ldap, $result); | |
ldap_unbind($ldap); | |
// check groups | |
$access = 0; | |
foreach($entries[0]['memberof'] as $grps) { | |
// is manager, break loop | |
if(strpos($grps, $ldap_manager_group)) { $access = 2; break; } | |
// is user | |
if(strpos($grps, $ldap_user_group)) $access = 1; | |
} | |
if($access != 0) { | |
// establish session variables | |
$_SESSION['user'] = $user; | |
$_SESSION['access'] = $access; | |
return true; | |
} else { | |
// user has no rights | |
return false; | |
} | |
} else { | |
// invalid name or password | |
return false; | |
} | |
} | |
?> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
<?php | |
// initialize session | |
session_start(); | |
include("authenticate.php"); | |
// check to see if user is logging out | |
if(isset($_GET['out'])) { | |
// destroy session | |
session_unset(); | |
$_SESSION = array(); | |
unset($_SESSION['user'],$_SESSION['access']); | |
session_destroy(); | |
} | |
// check to see if login form has been submitted | |
if(isset($_POST['userLogin'])){ | |
// run information through authenticator | |
if(authenticate($_POST['userLogin'],$_POST['userPassword'])) | |
{ | |
// authentication passed | |
header("Location: protected.php"); | |
die(); | |
} else { | |
// authentication failed | |
$error = 1; | |
} | |
} | |
// output error to user | |
if(isset($error)) echo "Login failed: Incorrect user name, password, or rights<br />"; | |
// output logout success | |
if(isset($_GET['out'])) echo "Logout successful"; | |
?> | |
<form action="login.php" method="post"> | |
User: <input type="text" name="userLogin" /><br /> | |
Password: <input type="password" name="userPassword" /> | |
<input type="submit" name="submit" value="Submit" /> | |
</form> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
<?php | |
// initialize session | |
session_start(); | |
if(!isset($_SESSION['user'])) { | |
// user is not logged in, do something like redirect to login.php | |
header("Location: login.php"); | |
die(); | |
} | |
if($_SESSION['access'] != 2) { | |
// another example... | |
// user is logged in but not a manager, let's stop him | |
die("Access Denied"); | |
} | |
?> | |
<p>Welcome <?= $_SESSION['user'] ?>!</p> | |
<p><strong>Secret Protected Content Here!</strong></p> | |
<p>Mary Had a Little Lamb</p> | |
<p><a href="login.php?out=1">Logout</a></p> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment