allow to change password without run rights for preferences via a new password app (part of preferences app, but separate to install)

This commit is contained in:
Ralf Becker 2010-07-27 14:29:20 +00:00
parent b9c0bea095
commit a5ba32b8b6
5 changed files with 168 additions and 114 deletions

View File

@ -850,11 +850,19 @@ abstract class egw_framework
{
$this->_add_topmenu_item($apps['home']);
}
if($GLOBALS['egw_info']['user']['apps']['preferences'])
{
$this->_add_topmenu_item($apps['preferences']);
}
elseif(($pw_app = $GLOBALS['egw_info']['user']['apps']['password']) &&
!$GLOBALS['egw']->acl->check('nopasswordchange', 1))
{
$this->_add_topmenu_item(array(
'title' => $pw_app['title'],
'url' => egw::link($pw_app['index']),
'icon' => common::image($pw_app['icon'],$pw_app['icon_app']),
));
}
if($GLOBALS['egw_info']['user']['apps']['manual'] && isset($apps['manual']))
{

View File

@ -567,7 +567,7 @@ class idots_framework extends egw_framework
$_item['url'] = $app_data['url'];
$_item['urlextra'] = $app_data['target'];
$_item['label'] = ($alt_label?$alt_label:$app_data['title']);
$this->tplsav2->menuitems[$app_data['name']] = $_item;
$this->tplsav2->menuitems[] = $_item;
$this->tplsav2->icon_or_star = $GLOBALS['egw_info']['server']['webserver_url'] . '/phpgwapi/templates/'.$this->template.'/images'.'/orange-ball.png';
}

View File

@ -1,16 +1,13 @@
<?php
/**************************************************************************\
* eGroupWare - preferences *
* http://www.egroupware.org *
* Written by Joseph Engo <jengo@phpgroupware.org> *
* -------------------------------------------- *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
/**
* EGroupware preferences
*
* @package preferences
* @link http://www.egroupware.org
* @author Joseph Engo <jengo@phpgroupware.org>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
class uipassword
{
@ -32,8 +29,14 @@
if($GLOBALS['egw']->acl->check('nopasswordchange', 1) || $_POST['cancel'])
{
$GLOBALS['egw']->redirect_link('/preferences/index.php');
$GLOBALS['egw']->common->egw_exit();
if ($GLOBALS['egw_info']['user']['apps']['preferences'])
{
egw::redirect_link('/preferences/index.php');
}
else
{
egw::redirect_link('/index.php'); // redirect to start page
}
}
$GLOBALS['egw']->template->set_file(array(
@ -44,7 +47,10 @@
$GLOBALS['egw']->template->set_var('lang_enter_old_password',lang('Enter your old password'));
$GLOBALS['egw']->template->set_var('lang_change',lang('Change'));
$GLOBALS['egw']->template->set_var('lang_cancel',lang('Cancel'));
$GLOBALS['egw']->template->set_var('form_action',$GLOBALS['egw']->link('/index.php','menuaction=preferences.uipassword.change'));
$GLOBALS['egw']->template->set_var('form_action',
$GLOBALS['egw_info']['user']['apps']['preferences'] ?
egw::link('/index.php','menuaction=preferences.uipassword.change') :
egw::link('/preferences/password.php'));
if($GLOBALS['egw_info']['server']['auth_type'] != 'ldap')
{
@ -77,27 +83,28 @@
if(is_array($errors))
{
$GLOBALS['egw']->common->egw_header();
common::egw_header();
echo parse_navbar();
$GLOBALS['egw']->template->set_var('messages',$GLOBALS['egw']->common->error_list($errors));
$GLOBALS['egw']->template->set_var('messages',common::error_list($errors));
$GLOBALS['egw']->template->pfp('out','form');
$GLOBALS['egw']->common->egw_exit(True);
common::egw_exit(True);
}
$passwd_changed = $this->bo->changepass($o_passwd, $n_passwd);
if(!$passwd_changed)
{
$errors[] = lang('Failed to change password. Please contact your administrator.');
$GLOBALS['egw']->common->egw_header();
common::egw_header();
echo parse_navbar();
$GLOBALS['egw']->template->set_var('messages',$GLOBALS['egw']->common->error_list($errors));
$GLOBALS['egw']->template->set_var('messages',common::error_list($errors));
$GLOBALS['egw']->template->pfp('out','form');
$GLOBALS['egw']->common->egw_exit(True);
common::egw_exit(True);
}
else
{
$GLOBALS['egw']->session->appsession('password','phpgwapi',base64_encode($n_passwd));
$GLOBALS['egw_info']['user']['passwd'] = $n_passwd;
egw::invalidate_session_cache();
$GLOBALS['hook_values']['account_id'] = $GLOBALS['egw_info']['user']['account_id'];
$GLOBALS['hook_values']['old_passwd'] = $o_passwd;
$GLOBALS['hook_values']['new_passwd'] = $n_passwd;
@ -106,19 +113,19 @@
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values']+array(
'location' => 'changepassword',
),False,True);
$GLOBALS['egw']->redirect_link('/preferences/index.php','cd=18');
}
}
else
if ($GLOBALS['egw_info']['user']['apps']['preferences'])
{
egw::redirect_link('/preferences/index.php','cd=18');
}
$_GET['message'] = lang('Password changed');
}
}
$GLOBALS['egw_info']['flags']['app_header'] = lang('Change your password');
$GLOBALS['egw']->common->egw_header();
common::egw_header();
echo parse_navbar();
$GLOBALS['egw']->template->set_var('messages',$_GET['message']);
$GLOBALS['egw']->template->set_var('messages','<span class="redItalic">'.htmlspecialchars($_GET['message']).'</span>');
$GLOBALS['egw']->template->pfp('out','form');
$GLOBALS['egw']->common->egw_footer();
common::egw_footer();
}
}
}
?>

24
preferences/password.php Normal file
View File

@ -0,0 +1,24 @@
<?php
/**
* EGroupware preferences password change without preferences rights
*
* @package preferences
* @link http://www.egroupware.org
* @author Ralf Becker <rb@stylite.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
$GLOBALS['egw_info'] = array(
'flags' => array(
'noheader' => True,
'nonavbar' => True,
'currentapp' => 'password',
)
);
include('../header.inc.php');
$GLOBALS['egw']->template = new Template(common::get_tpl_dir('preferences'));
ExecMethod('preferences.uipassword.change');
common::egw_footer();

View File

@ -29,3 +29,18 @@ $setup_info['preferences']['depends'][] = array(
'appname' => 'phpgwapi',
'versions' => Array('1.2','1.3','1.4','1.5','1.6','1.7')
);
/**
* Password change without preferences rights
*/
$setup_info['password']['name'] = 'password';
$setup_info['password']['title'] = 'Password';
$setup_info['password']['version'] = $setup_info['preferences']['version'];
$setup_info['password']['app_order'] = 1;
$setup_info['password']['tables'] = array();
$setup_info['password']['enable'] = 2;
$setup_info['password']['index'] = '/preferences/password.php';
$setup_info['password']['author'] = $setup_info['preferences']['author'];
$setup_info['password']['maintainer']= $setup_info['preferences']['maintainer'];
$setup_info['password']['license'] = $setup_info['preferences']['license'];
$setup_info['password']['depends'] = $setup_info['preferences']['depends'];