[dev] [PATCH] First login hook

Jan Schneider jan at horde.org
Mon May 10 09:29:27 PDT 2004


For me the latter.

Zitat von Etienne Goyer <etienne.goyer at linuxquebec.com>:

> Content-Type: text/plain; charset=us-ascii; format=flowed
> Content-Transfer-Encoding: 7bit
>
> Sorry for bumping this ... I was just wondering if this patch did not
> receive feedback because there is a problem with it, or because the
> feature is uninteresting, or just because the devs have been busy with
> something else lately.
>
> Thanks for your time !
>
> Etienne Goyer wrote:
>> I am so distracted it's not even funny ....
>>
>> Here is the patch.
>>
>> Etienne Goyer wrote:
>>
>>> Hi,
>>>
>>> To follow-up on the discussion from this morning about having an
>>> "instruction" first login maintenance task, I implemented a
>>> _horde_hook_firstlogin instead.  Example use for this hook :
>>>
>>> - Display a first time greeting message via the Notification class
>>> - Send a greeting email
>>> - Create approriate IMAP folders, especially the sent-mail since it is
>>> not created automatically by IMP on first use
>>> - Log it, so you know who have used the webmail at least once
>>>
>>> ... etc, etc.  All this could be done with a first login maintenance
>>> task, but I think it is simpler to write/configure a hook than to
>>> write a full-blown maintenance task and is still worthwhile for site
>>> that do not have maintenance enabled.
>>>
>>> Comments ?
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> diff -ruN horde.orig/config/conf.php horde/config/conf.php
>> --- horde.orig/config/conf.php	2004-05-06 14:06:18.000000000 -0400
>> +++ horde/config/conf.php	2004-05-06 14:20:22.000000000 -0400
>> @@ -568,6 +568,11 @@
>>  // There are examples for such functions in horde/config/hooks.php.dist.
>>  $conf['hooks']['postauthenticate'] = false;
>>
>> +// If this is set to true, the _horde_hook_firstlogin() function 
>> will be run.
>> +// You could do various thing, like displaying message to user, 
>> creating mail
>> +// folders, sending a greeting email, etc.
>> +$conf['hooks']['firstlogin'] = true;
>> +
>>  // If this is set to true, the function _horde_hook_authldap() will be used
>>  // to create and set the attributes needed to add/edit/delete users by the
>>  // LDAP Auth driver
>> diff -ruN horde.orig/config/hooks.php.dist horde/config/hooks.php.dist
>> --- horde.orig/config/hooks.php.dist	2004-04-26 14:40:20.000000000 -0400
>> +++ horde/config/hooks.php.dist	2004-05-06 15:19:16.000000000 -0400
>> @@ -287,6 +287,23 @@
>>      }
>>  }
>>
>> +// Here is an example for displaying informationnal messages on 
>> first login.
>> +if (!function_exists('_horde_hook_firstlogin')) {
>> +    function _horde_hook_firstlogin($userId)
>> +    {
>> +        global $language;
>> +
>> +        $notification = Notification::singleton();
>> +        $message = _('Before sending email, it is imperative that 
>> you set your From: address. ');
>> +        $message .= _('To do so, click "Mail", "Options", 
>> "Personnal Information", "Edit your identities", ');
>> +        $message .= ('and add a "From:" address. ');
>> +        $message .= _('You may also want to create your sent mail 
>> folders (by default, "Sent Items").');
>> +
>> +        $notification->push($message, 'horde.warning');
>> +    }
>> +}
>> +
>> +
>>  // Here is an example of creating credentials needed by the LDAP 
>> Auth driver for
>>  // adding/deleting/updating users.
>>  if (!function_exists('_horde_hook_authldap')) {
>> diff -ruN horde.orig/lib/Horde/Auth.php horde/lib/Horde/Auth.php
>> --- horde.orig/lib/Horde/Auth.php	2004-04-02 12:38:51.000000000 -0500
>> +++ horde/lib/Horde/Auth.php	2004-05-06 15:02:59.000000000 -0400
>> @@ -608,7 +608,9 @@
>>                  }
>>              }
>>          }
>> -        if (!empty($old_login['time'])) {
>> +        if (empty($old_login['time'])) {
>> +            Auth::firstLogin($userId);
>> +        } else {
>>              $_SESSION['__auth']['last_login'] = $old_login['time'];
>>          }
>>
>> @@ -729,6 +731,25 @@
>>      }
>>
>>      /**
>> +     * Run the _horde_hook_firstlogin if appropriate.
>> +     *
>> +     * @param string $userId  The Horde user name.
>> +     *
>> +     * @return string  The user name with the hook applied to it.
>> +     */
>> +    function firstLogin($userId)
>> +    {
>> +        global $conf;
>> +
>> +        if (!empty($conf['hooks']['firstlogin'])) {
>> +            require_once HORDE_BASE . '/config/hooks.php';
>> +            if (function_exists('_horde_hook_firstlogin')) {
>> +                call_user_func('_horde_hook_firstLogin', $userId);
>> +            }
>> +        }
>> +    }
>> +
>> +    /**
>>       * Query the current Auth object to find out if it supports the
>>       * given capability.
>>       *
>>
>>
>> ------------------------------------------------------------------------
>>
>>



Jan.

--
Do you need professional PHP or Horde consulting?
http://horde.org/consulting/


More information about the dev mailing list