I’ve got a “make-do” page authenticator which defines what usergroups are allowed to access that page, however, some of my scripts allow the user to pass if that page is, say, his user edit page but not touch any other users edit page. For that, I disabled access to the usergroups except if you’re an admin or the user edit page you are currently on is your own.
I tried to create a function to do this, but the allowOnly usergroups function deals out the punishment without checking to see if the other function is defined elsewhere on the page.
Here’s the “make-do” functions and an example of how I’d like them to work:
public function allowOnly($officer, $administrator, $superuser)
{
$authority = 0;
if ($officer == true && $this->session->isOfficer()) {
$authority++;
}
elseif ($administrator == true & $this->session->isAdmin()) {
$authority++;
}
elseif ($superuser == true & $this->session->isSuperuser()) {
$authority++;
}
if ($authority != 0) {
return true;
}
else {
header("Location: ../incorrectRights.php");
exit;
}
}
function allowCurrentUser()
{
global $authority;
$authority++;
}
This changes the users location if they’re not any of the allowed usergroups, but since that code is executed before “allowCurrentUser”, it changes the location before the function gets the chance to allow the user through.
I’d like it to work like this:
<?php
include("functions.php");
$functions->allowOnly(false, false, true);
if($session->username == $allowedUserName) {
$functions->allowCurrentUser();
}
I’m sorry if I’m not descriptive enough, or my code lacks efficiency, heck, even if I’ve missed a built-in php function which does this for me!
you should check out PHP’s function_exists(), this will tell you wether or not the function already exist.
you have some error in your code too.
should be
as you have used only single
&whereas it should be&&and also change
to
after reading your code, i realized you are using
$authorityvariable to hold the value and to check wether to authorize user or not. and plus you are using global. i would never have done that way, instead i would declare $authority as class property below is the example of how you could do it.UPDATE:
instead of redirecting the page why not return false and redirect during function call, you can do it this way.
and while in function call.