.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32 .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. | will give a .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' .\" expand to `' in nroff, nothing in troff, for use with C<>. .tr \(*W-|\(bv\*(Tr .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .\" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .hy 0 .if n .na .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Gantry::Control 3" .TH Gantry::Control 3 "2008-01-18" "perl v5.8.8" "User Contributed Perl Documentation" .SH "NAME" Gantry::Control \- The Core for User Management and Administration .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Gantry::Control; .Ve .PP .Vb 2 \& dec2bin \& ( $one, $two, $three ) = dec2bin( $bits ); .Ve .PP .Vb 2 \& encrypt \& $encrypted = encrypt( $unencripted ); .Ve .PP .Vb 2 \& get_grnam \& $gid = get_grnam( $dbh, $group_name ); .Ve .PP .Vb 2 \& get_grgid \& $group_name = get_grgid( $dbh, $gid ); .Ve .PP .Vb 3 \& get_pwnam \& ( $user_id, $active, $passwd, $first, $last, $email ) = \& get_pwnam( $dbh, $user_name ); .Ve .PP .Vb 3 \& get_pwuid \& ( $user_name, $active, $passwd, $first, $last, $email ) = \& get_pwuid( $dbh, $user_id ); .Ve .PP .Vb 2 \& get_usergrp \& $grp = get_usrgrp( $dbh, $uid ); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module is a library of useful access functions that would be used in other handlers, it also details the other modules that belong to the Control tree. .SH "FUNCTIONS" .IX Header "FUNCTIONS" .ie n .IP "( $user\fR, \f(CW$group\fR, \f(CW$world\fR ) = dec2bin( \f(CW$bits )" 4 .el .IP "( \f(CW$user\fR, \f(CW$group\fR, \f(CW$world\fR ) = dec2bin( \f(CW$bits\fR )" 4 .IX Item "( $user, $group, $world ) = dec2bin( $bits )" This function decodes three digit permissions used by the page based authentication and management, the first value in the array is a boolean of the user permission. The second and third are for group and world respectively. All values are either '1' for they have permission or '0' for no permission. .ie n .IP "$encrypted = encrypt( $unencripted )" 4 .el .IP "$encrypted = encrypt( \f(CW$unencripted\fR )" 4 .IX Item "$encrypted = encrypt( $unencripted )" This function is just a wrapper to the standard unix crypt so it can be easily used, and consitantly even. .ie n .IP "$gid = get_grnam( $dbh\fR, \f(CW$group_name )" 4 .el .IP "$gid = get_grnam( \f(CW$dbh\fR, \f(CW$group_name\fR )" 4 .IX Item "$gid = get_grnam( $dbh, $group_name )" Finds a groups gid based on the group name. .ie n .IP "$group_name = get_grgid( $dbh\fR, \f(CW$gid )" 4 .el .IP "$group_name = get_grgid( \f(CW$dbh\fR, \f(CW$gid\fR )" 4 .IX Item "$group_name = get_grgid( $dbh, $gid )" Finds a groups name based on the groups id. .ie n .IP "@user_info = get_pwnam( $dbh\fR, \f(CW$user_name )" 4 .el .IP "@user_info = get_pwnam( \f(CW$dbh\fR, \f(CW$user_name\fR )" 4 .IX Item "@user_info = get_pwnam( $dbh, $user_name )" This emulates C's getpwnam save it operates on the database. The return values are, in this order: Users database id, a boolean for the active status of the user, the users password ( as kept in the database ), the users first name, the users last name, and the users email address. .ie n .IP "@user_info = get_pwuid( $dbh\fR, \f(CW$user_id )" 4 .el .IP "@user_info = get_pwuid( \f(CW$dbh\fR, \f(CW$user_id\fR )" 4 .IX Item "@user_info = get_pwuid( $dbh, $user_id )" This emulates C's getpwuid save it operates on the database. The return values are, in this order: Users username, a boolean for the active status of the user, the users password ( as kept in the database ), the users first name, the users last name, and the users email address. .ie n .IP "$grp = get_usrgrp( $dbh\fR, \f(CW$uid )" 4 .el .IP "$grp = get_usrgrp( \f(CW$dbh\fR, \f(CW$uid\fR )" 4 .IX Item "$grp = get_usrgrp( $dbh, $uid )" This function takes the database handle and a users id. It returns a hash reference of group ids to their name that the user is in. .SH "MODULES" .IX Header "MODULES" .IP "Gantry::Control::C::Access" 4 .IX Item "Gantry::Control::C::Access" .PD 0 .IP "Gantry::Control::C::AuthenRegular" 4 .IX Item "Gantry::Control::C::AuthenRegular" .PD This module allows authentication against a database. Woo. .IP "Gantry::Control::C::AuthzRegular" 4 .IX Item "Gantry::Control::C::AuthzRegular" This is a simple database driven autorization system. This module also details the other Authz modules in the library. .IP "Gantry::Control::C::Groups" 4 .IX Item "Gantry::Control::C::Groups" This controller module handles all of the group manipulation for the authorization and authentication handlers. .IP "Gantry::Control::C::Pages" 4 .IX Item "Gantry::Control::C::Pages" This controller module is the frontend for the Gantry::Control::Authz::PageBased authentication handler. One would specify pages as well as the permissions with this frontend module. .IP "Gantry::Control::C::Users" 4 .IX Item "Gantry::Control::C::Users" This Handler manages users in the database to facilitate the use of that information for authentication, autorization, and use in applications. This replaces the use of htpasswd for user management and puts more information at the finger tips of the application. .SH "SCHEMA FOR AUTH TABLES" .IX Header "SCHEMA FOR AUTH TABLES" .Vb 13 \& create sequence "auth_users"; \& create table "auth_users" ( \& "id" int4 default nextval('auth_users_seq'::text) NOT NULL, \& "user_id" int4 default currval('auth_users_seq') NOT NULL, \& "active" bool, \& "user_name" varchar, \& "passwd" varchar, \& "crypt" varchar, \& "first_name" varchar, \& "last_name" varchar, \& "email" varchar, \& CONSTRAINT auth_users_pk PRIMARY KEY (user_id) \& ); .Ve .PP .Vb 7 \& create sequence "auth_groups_seq"; \& create table "auth_groups" ( \& "id" int4 default nextval('auth_groups_seq'::text) NOT NULL, \& "name" varchar, \& "ident" varchar, \& "description" text \& ); .Ve .PP .Vb 11 \& create sequence "auth_pages_seq"; \& create table "auth_pages" ( \& "id" int4 default nextval('auth_pages_seq'::text) NOT NULL, \& "user_perm" int4, \& "group_perm" int4, \& "world_perm" int4, \& "owner_id" int4, \& "group_id" int4, \& "uri" varchar, \& "title" varchar \& ); .Ve .PP .Vb 6 \& create sequence "auth_group_members_seq"; \& create table "auth_group_members" ( \& "id" int4 default nextval('auth_group_members_seq'::text) NOT NULL, \& "user_id" int4, \& "group_id" int4 \& ); .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fIGantry\fR\|(3) .SH "AUTHOR" .IX Header "AUTHOR" Tim Keefer Nick Studt .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (C) 2005\-6, Tim Keefer .PP This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.