The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

ePortal::Server - The core module of ePortal project.

SYNOPSIS

ePortal is a set of perl packages and HTML::Mason components to easy implement intranet WEB site for a company. ePortal is writen with a help of Apache, mod_perl, HTML::Mason. The current version of ePortal use MySQL as database backend.

METHODS

Application()

 $app = $ePortal->Application('appname');

Returns ePortal::Application object or undef if no such object exists.

Returns $ePortal itself for application called 'ePortal'.

throws Exception::ApplicationNotInstalled if the application is not installed.

ApplicationsInstalled()

Returns array of installed application names based on modules found in ePortal::App directory

CheckUserAccount($username,$password)

Complete checks for a user account. If it is external user then local copy is created. If local copy is expired, then it is refreshed.

This function is used during login phase.

Parameters:

  • username

    User name to check. It is from login dialog box

  • password

    A password from login dialog box to verify

Returns: (username,reason) in array context and username in scalar context.

In case of bad login the username is undefined and reason is the code of denial.

In case of successful login username returned

cleanup_request()

Cleans all internal variables and caches after request is completed.

isAdmin()

Check current for for admin privilegies.

If the server run under command line then the user always is admin.

Returns [1|0]

UserConfig()

Retrieve/store configuration parameter for a user. Anonymous users share the same parameters. Use $session hash for session specific parameters.

 UserConfig(parameter, value)

Optional value may be hashref of arrayref

Returns current or new value of the parameter.

Config

The same as UserConfig but stores server specific parameters.

DBConnect()

In general DBConnect() is used to get ePortal's database handle.

This function returns $dbh - database handle or throws ePortal::Exception::DBI.

send_email($receipient,$subject,$text)

Send an e-mail on behalf of ePortal server. send_email() make all character set conversions needed for e-mail.

onDeleteUser

This is callback function. Do not call it directly. It calls once onDeleteUser(username) for every application installed.

Parameters:

  • username

    User name to delete.

onDeleteGroup

This is callback function. Do not call it directly. It calls once onDeleteGroup(groupname) for every application installed.

Parameters:

  • groupname

    Group name to delete.

max_allowed_packet

Maximum allowed packet size for database. By default MySQL server has limit to 1M packet size but this limit may be changed.

LOGIN PROCESS

User authorization and authentication is ticket based. The ticked is created during login process and saved in user's cookie. The ticked is validated on every request.

login.htm

It is main login point. The authentication thicket is created here. The ticked is stored in user cookie. Format of the ticked is:

 secret:username:remoteip:md5hash

Complete user validation procedure is done by CheckUserAccount()

Quick validation.

Quick validation of a user is done in ePortal::AuthCookieHandler::recognize_user(). The user is checked with a cookie based ticked. The ticked is signed with MD5 checksum. If something is wrong then ticket is cancelled.

Quick validation process is done by CheckUserAccount(quick=1)>

External users

ePortal may authenticate an user in external directory like LDAP. Currently only Novell Netware LDAP server is tested.

AUTHOR

Sergey Rusakov, <rusakov_sa@users.sourceforge.net>