53 public $default_privileges;
55 private $privilege_resources = array();
65 function __construct( $sid=
'' ) {
66 $this->principal_id =
null;
67 parent::__construct($sid);
75 function AssignSessionDetails( $u ) {
76 if ( !isset($u->principal_id) ) {
78 $qry =
new AwlQuery(
'SELECT * FROM dav_principal WHERE username = :username', array(
':username' => $u->username) );
79 if ( $qry->Exec() && $qry->rows() == 1 ) {
84 parent::AssignSessionDetails( $u );
86 if ( function_exists(
'awl_set_locale') && isset($this->locale) && $this->locale !=
'' ) {
87 awl_set_locale($this->locale);
95 function GetRoles () {
96 $this->roles = array();
97 $sql =
'SELECT role_name FROM roles JOIN role_member ON roles.role_no=role_member.role_no WHERE user_no = '.$this->user_no;
98 $qry =
new AwlQuery( $sql );
99 if ( $qry->Exec(
'DAViCalSession') && $qry->rows() > 0 ) {
100 while( $role = $qry->Fetch() ) {
101 $this->roles[$role->role_name] = 1;
105 $sql =
'SELECT role_name FROM (((group_member JOIN dav_principal first_dav_principal ON group_member.group_id=first_dav_principal.principal_id) JOIN role_member ON first_dav_principal.user_no=role_member.user_no) JOIN roles ON roles.role_no=role_member.role_no) JOIN dav_principal second_dav_principal ON group_member.member_id=second_dav_principal.principal_id WHERE second_dav_principal.user_no = '.$this->user_no;
106 $qry =
new AwlQuery( $sql );
107 if ( $qry->Exec(
'DAViCalSession') && $qry->rows() > 0 ) {
108 while( $role = $qry->Fetch() ) {
109 if($role->role_name==
'Admin')
110 $this->roles[
'Admin'] = 1;
123 function HavePrivilegeTo( $do_what, $path, $any =
null ) {
124 if ( $this->AllowedTo(
'Admin') )
return true;
125 if ( !isset($this->privilege_resources[$path]) ) {
126 $this->privilege_resources[$path] =
new DAVResource($path);
128 $resource = $this->privilege_resources[$path];
129 if ( isset($resource) && $resource->Exists() ) {
130 return $resource->HavePrivilegeTo($do_what,$any);
141 function RenderLoginPanel() {
143 $action_target = htmlspecialchars(preg_replace(
'/\?logout.*$/',
'',$_SERVER[
'REQUEST_URI']));
144 dbg_error_log(
"Login",
" RenderLoginPanel: action_target='%s'", $action_target );
145 $userprompt = translate(
"User Name");
146 $pwprompt = translate(
"Password");
147 $gobutton = htmlspecialchars(translate(
"GO!"));
148 $gotitle = htmlspecialchars(translate(
"Enter your username and password then click here to log in."));
149 $temppwprompt = translate(
"If you have forgotten your password then");
150 $temppwbutton = htmlspecialchars(translate(
"Help! I've forgotten my password!"));
151 if (isset($c->password_change_override) ) {
152 $temppw_html =
'<a href="' . $c->password_change_override[
'href'] .
'">' . $c->password_change_override[
'label'] .
'</a>';
154 $temppwtitle = htmlspecialchars(translate(
"Enter a username, if you know it, and click here, to be e-mailed a temporary password."));
155 $temppw_html =
'<input type="submit" value="' . $temppwbutton .
'" title="' . $temppwtitle .
'" name="lostpass" class="submit" />';
159<form action=
"$action_target" method=
"post">
162<th
class=
"prompt">$userprompt:</th>
164<input
class=
"text" type=
"text" name=
"username" size=
"12" /></td>
167<th
class=
"prompt">$pwprompt:</th>
169<input
class=
"password" type=
"password" name=
"password" size=
"12" />
173<th
class=
"prompt"> </th>
175<input type=
"submit" value=
"$gobutton" title=
"$gotitle" name=
"submit" class=
"submit" />
180$temppwprompt: $temppw_html
199 function LoginRequired( $roles =
'' ) {
200 global $c, $session, $main_menu, $sub_menu, $tab_menu;
202 $current_domain = (isset($_SERVER[
'SERVER_NAME'])?$_SERVER[
'SERVER_NAME']:$_SERVER[
'SERVER_ADDR']);
203 if ( (isset($c->restrict_admin_domain) && $c->restrict_admin_domain != $current_domain)
204 || (isset($c->restrict_admin_port) && $c->restrict_admin_port != $_SERVER[
'SERVER_PORT'] ) ) {
205 header(
'Location: caldav.php');
206 dbg_error_log(
'LOG WARNING',
'Access to "%s" via "%s:%d" rejected.', $_SERVER[
'REQUEST_URI'], $current_domain, $_SERVER[
'SERVER_PORT'] );
207 @ob_flush(); exit(0);
209 if ( isset($c->restrict_admin_roles) && $roles ==
'' ) $roles = $c->restrict_admin_roles;
210 if ( $this->logged_in && $roles ==
'' )
return;
215 if ( isset($_SERVER[
'PHP_AUTH_USER']) && !$this->logged_in && $_SERVER[
'PHP_AUTH_USER'] !=
"" && $_SERVER[
'PHP_AUTH_PW'] !=
"" && ! $_COOKIE[
'NoAutoLogin'] ) {
216 if ( $this->Login($_SERVER[
'PHP_AUTH_USER'],$_SERVER[
'PHP_AUTH_PW'],
false)) {
217 setcookie(
'NoAutoLogin',1,0);
221 if ( ! $this->logged_in ) {
222 $c->messages[] = i18n(
'You must log in to use this system.');
223 include_once(
'page-header.php');
224 if ( function_exists(
'local_index_not_logged_in') ) {
225 local_index_not_logged_in();
228 if ( $this->login_failed ) {
229 $c->messages[] = i18n(
'Invalid user name or password.');
231 echo
'<h1>'.translate(
'Log On Please').
"</h1>\n";
232 echo
'<p>'.translate(
'For access to the')
233 .
' '.translate($c->system_name).
' '
234 .translate(
'you should log on with the username and password that have been issued to you.')
236 echo
'<p>'.translate(
'If you would like to request access, please e-mail').
' '.$c->admin_email.
"</p>\n";
237 echo $this->RenderLoginPanel();
241 $valid_roles = explode(
',', $roles);
242 foreach( $valid_roles AS $k => $v ) {
243 if ( $this->AllowedTo($v) )
return;
245 $c->messages[] = i18n(
'You are not authorised to use this function.');
246 include_once(
'page-header.php');
249 include(
'page-footer.php');
250 @ob_flush(); exit(0);