Added a demo mode (config: demo_mode = true). In that mode, logins get read-only (even for admins)

SVN:trunk[2951]
This commit is contained in:
Romain Quetiez
2013-10-23 13:36:44 +00:00
parent dcb5a7208a
commit 0c327f2c36
3 changed files with 43 additions and 1 deletions

View File

@@ -659,6 +659,14 @@ class Config
'source_of_value' => '',
'show_in_conf_sample' => true,
),
'demo_mode' => array(
'type' => 'bool',
'description' => 'Set to true to prevent users from changing passwords/languages',
'default' => false,
'value' => '',
'source_of_value' => '',
'show_in_conf_sample' => false,
),
);
public function IsProperty($sPropCode)

View File

@@ -74,7 +74,10 @@ class UserLocal extends UserInternal
public function CanChangePassword()
{
// For now everyone can change their password..
if (MetaModel::GetConfig()->Get('demo_mode'))
{
return false;
}
return true;
}
@@ -104,5 +107,28 @@ class UserLocal extends UserInternal
$oChange->DBInsert();
$this->DBUpdateTracked($oChange, true);
}
/**
* Returns the set of flags (OPT_ATT_HIDDEN, OPT_ATT_READONLY, OPT_ATT_MANDATORY...)
* for the given attribute in the current state of the object
* @param $sAttCode string $sAttCode The code of the attribute
* @param $aReasons array To store the reasons why the attribute is read-only (info about the synchro replicas)
* @param $sTargetState string The target state in which to evalutate the flags, if empty the current state will be used
* @return integer Flags: the binary combination of the flags applicable to this attribute
*/
public function GetAttributeFlags($sAttCode, &$aReasons = array(), $sTargetState = '')
{
$iFlags = parent::GetAttributeFlags($sAttCode, $aReasons, $sTargetState);
if (MetaModel::GetConfig()->Get('demo_mode'))
{
if (strpos('contactid,login,language,password,profile_list,allowed_org_list', $sAttCode) !== false)
{
// contactid and allowed_org_list are disabled to make sure the portal remains accessible
$aReasons[] = 'Sorry, this attribute is read-only in the demonstration mode!';
$iFlags |= OPT_ATT_READONLY;
}
}
return $iFlags;
}
}

View File

@@ -52,6 +52,14 @@ function DisplayPreferences($oP)
$aSortedlang = array();
foreach($aLanguages as $sCode => $aLang)
{
if (MetaModel::GetConfig()->Get('demo_mode'))
{
if ($sCode != Dict::GetUserLanguage())
{
// Demo mode: only the current user language is listed in the available choices
continue;
}
}
$aSortedlang[$aLang['description']] = $sCode;
}
ksort($aSortedlang);