Difference between revisions of "Freeside:3:Documentation:Developer/FS/UID"
m (Edit via perl MediaWiki framework (1.13)) |
m (Edit via perl MediaWiki framework (1.13)) |
||
Line 4: | Line 4: | ||
==SYNOPSIS== | ==SYNOPSIS== | ||
<code> | <code> | ||
− | use FS::UID qw(adminsuidsetup dbh datasrc checkeuid checkruid); | + | use FS::UID qw(adminsuidsetup cgisuidsetup dbh datasrc getotaker |
+ | checkeuid checkruid); | ||
− | $dbh = | + | adminsuidsetup $user; |
+ | |||
+ | $cgi = new CGI; | ||
+ | $dbh = cgisuidsetup($cgi); | ||
$dbh = dbh; | $dbh = dbh; | ||
Line 19: | Line 23: | ||
==SUBROUTINES== | ==SUBROUTINES== | ||
; adminsuidsetup USER | ; adminsuidsetup USER | ||
− | :Sets the user to USER (see config.html from the base documentation). Cleans the environment. Make sure the script is running as freeside, or setuid freeside. Opens a connection to the database. Runs any defined callbacks (see below). Returns the DBI database handle (usually you don't need this). | + | :Sets the user to USER (see config.html from the base documentation). Cleans the environment. Make sure the script is running as freeside, or setuid freeside. Opens a connection to the database. Swaps real and effective UIDs. Runs any defined callbacks (see below). Returns the DBI database handle (usually you don't need this). |
; install_callback | ; install_callback | ||
:A package can install a callback to be run in adminsuidsetup by passing a coderef to the FS::UID->install_callback class method. If adminsuidsetup has run already, the callback will also be run immediately. | :A package can install a callback to be run in adminsuidsetup by passing a coderef to the FS::UID->install_callback class method. If adminsuidsetup has run already, the callback will also be run immediately. | ||
Line 30: | Line 34: | ||
}; | }; | ||
</code> | </code> | ||
+ | ; cgisuidsetup CGI_object | ||
+ | :Takes a single argument, which is a CGI (see [[Freeside:3:Documentation:Developer/CGI|CGI]]) or Apache (see [[Freeside:3:Documentation:Developer/Apache|Apache]]) object (CGI::Base is depriciated). Runs cgisetotaker and then adminsuidsetup. | ||
; cgi | ; cgi | ||
:Returns the CGI (see [[Freeside:3:Documentation:Developer/CGI|CGI]]) object. | :Returns the CGI (see [[Freeside:3:Documentation:Developer/CGI|CGI]]) object. | ||
− | |||
− | |||
; dbh | ; dbh | ||
:Returns the DBI database handle. | :Returns the DBI database handle. | ||
Line 41: | Line 45: | ||
:Returns just the driver name portion of the DBI data source. | :Returns just the driver name portion of the DBI data source. | ||
; getotaker | ; getotaker | ||
− | : | + | :Returns the current Freeside user. |
+ | ; cgisetotaker | ||
+ | :Sets and returns the CGI REMOTE_USER. $cgi should be defined as a CGI.pm object (see [[Freeside:3:Documentation:Developer/CGI|CGI]]) or an Apache object (see [[Freeside:3:Documentation:Developer/Apache|Apache]]). Support for CGI::Base and derived classes is depriciated. | ||
; checkeuid | ; checkeuid | ||
:Returns true if effective UID is that of the freeside user. | :Returns true if effective UID is that of the freeside user. | ||
; checkruid | ; checkruid | ||
:Returns true if the real UID is that of the freeside user. | :Returns true if the real UID is that of the freeside user. | ||
− | ; getsecrets | + | ; getsecrets [ USER ] |
− | :Sets and returns the DBI datasource, username and password from the `/usr/local/etc/freeside/ | + | :Sets the user to USER, if supplied. Sets and returns the DBI datasource, username and password for this user from the `/usr/local/etc/freeside/mapsecrets' file. |
; use_confcompat | ; use_confcompat | ||
:Returns true whenever we should use 1.7 configuration compatibility. | :Returns true whenever we should use 1.7 configuration compatibility. | ||
Line 79: | Line 85: | ||
Not OO. | Not OO. | ||
− | No capabilities yet. | + | No capabilities yet. When mod_perl and Authen::DBI are implemented, cgisuidsetup will go away as well. |
Goes through contortions to support non-OO syntax with multiple datasrc's. | Goes through contortions to support non-OO syntax with multiple datasrc's. |
Revision as of 07:46, 24 March 2015
NAME
FS::UID - Subroutines for database login and assorted other stuff
SYNOPSIS
use FS::UID qw(adminsuidsetup cgisuidsetup dbh datasrc getotaker checkeuid checkruid); adminsuidsetup $user; $cgi = new CGI; $dbh = cgisuidsetup($cgi); $dbh = dbh; $datasrc = datasrc; $driver_name = driver_name;
DESCRIPTION
Provides a hodgepodge of subroutines.
SUBROUTINES
- adminsuidsetup USER
- Sets the user to USER (see config.html from the base documentation). Cleans the environment. Make sure the script is running as freeside, or setuid freeside. Opens a connection to the database. Swaps real and effective UIDs. Runs any defined callbacks (see below). Returns the DBI database handle (usually you don't need this).
- install_callback
- A package can install a callback to be run in adminsuidsetup by passing a coderef to the FS::UID->install_callback class method. If adminsuidsetup has run already, the callback will also be run immediately.
$coderef = sub { warn "Hi, I'm returning your call!" }; FS::UID->install_callback($coderef); install_callback FS::UID sub { warn "Hi, I'm returning your call!" };
- cgisuidsetup CGI_object
- Takes a single argument, which is a CGI (see CGI) or Apache (see Apache) object (CGI::Base is depriciated). Runs cgisetotaker and then adminsuidsetup.
- cgi
- Returns the CGI (see CGI) object.
- dbh
- Returns the DBI database handle.
- datasrc
- Returns the DBI data source.
- driver_name
- Returns just the driver name portion of the DBI data source.
- getotaker
- Returns the current Freeside user.
- cgisetotaker
- Sets and returns the CGI REMOTE_USER. $cgi should be defined as a CGI.pm object (see CGI) or an Apache object (see Apache). Support for CGI::Base and derived classes is depriciated.
- checkeuid
- Returns true if effective UID is that of the freeside user.
- checkruid
- Returns true if the real UID is that of the freeside user.
- getsecrets [ USER ]
- Sets the user to USER, if supplied. Sets and returns the DBI datasource, username and password for this user from the `/usr/local/etc/freeside/mapsecrets' file.
- use_confcompat
- Returns true whenever we should use 1.7 configuration compatibility.
CALLBACKS
Warning: this interface is (still) likely to change in future releases.
New (experimental) callback interface:
A package can install a callback to be run in adminsuidsetup by passing a coderef to the FS::UID->install_callback class method. If adminsuidsetup has run already, the callback will also be run immediately.
$coderef = sub { warn "Hi, I'm returning your call!" }; FS::UID->install_callback($coderef); install_callback FS::UID sub { warn "Hi, I'm returning your call!" };
Old (deprecated) callback interface:
A package can install a callback to be run in adminsuidsetup by putting a coderef into the hash %FS::UID::callback :
$coderef = sub { warn "Hi, I'm returning your call!" }; $FS::UID::callback{'Package::Name'} = $coderef;
BUGS
Too many package-global variables.
Not OO.
No capabilities yet. When mod_perl and Authen::DBI are implemented, cgisuidsetup will go away as well.
Goes through contortions to support non-OO syntax with multiple datasrc's.
Callbacks are (still) inelegant.
SEE ALSO
FS::Record, CGI, DBI, config.html from the base documentation.