.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) .\" .\" Standard preamble: .\" ======================================================================== .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. \*(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- .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\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" 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 "Jifty::Plugin::OpenID 3pm" .TH Jifty::Plugin::OpenID 3pm "2010-01-18" "perl v5.10.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Jifty::Plugin::OpenID \- Provides OpenID authentication for your jifty app .SH "DESCRIPTION" .IX Header "DESCRIPTION" Provides OpenID authentication for your app .SH "USAGE" .IX Header "USAGE" .SS "Config" .IX Subsection "Config" please provide \f(CW\*(C`OpenIDSecret\*(C'\fR in your \fIetc/config.yml\fR , the \f(CW\*(C`OpenIDUA\*(C'\fR is \&\fBoptional\fR , OpenID Plugin will use LWPx::ParanoidAgent by default. .PP .Vb 4 \& \-\-\- \& application: \& OpenIDSecret: 1234 \& OpenIDUA: LWP::UserAgent .Ve .PP or you can set \f(CW\*(C`OpenIDUserAgent\*(C'\fR environment var in command-line: .PP .Vb 1 \& OpenIDUserAgent=LWP::UserAgent bin/jifty server .Ve .PP if you are using LWPx::ParanoidAgent as your openid agent. you will need to provide \f(CW\*(C`JIFTY_OPENID_WHITELIST_HOST\*(C'\fR for your own OpenID server. .PP .Vb 1 \& export JIFTY_OPENID_WHITELIST_HOST=123.123.123.123 .Ve .SS "User Model" .IX Subsection "User Model" Create your user model , and let it uses Jifty::Plugin::OpenID::Mixin::Model::User to mixin \*(L"openid\*(R" column. and a \f(CW\*(C`name\*(C'\fR method. .PP .Vb 1 \& use TestApp::Record schema { \& \& column email => \& type is \*(Aqvarchar\*(Aq; \& \& }; \& use Jifty::Plugin::OpenID::Mixin::Model::User; \& \& sub name { \& my $self = shift; \& return $self\->email; \& } .Ve .PP Note: you might need to declare a \f(CW\*(C`name\*(C'\fR method. because the OpenID CreateOpenIDUser action and SkeletonApp needs current_user\->username to show welcome message and success message , which calls \f(CW\*(C`brief_description\*(C'\fR method. See Jifty::Record for \f(CW\*(C`brief_description\*(C'\fR method. .SS "View" .IX Subsection "View" OpenID plugin provides AuthenticateOpenID Action. so that you can render an AuthenticateOpenID in your template: .PP .Vb 5 \& form { \& my $openid = new_action( class => \*(AqAuthenticateOpenID\*(Aq, \& moniker => \*(Aqauthenticateopenid\*(Aq ); \& render_action( $openid ); \& }; .Ve .PP this action renders a form which provides openid url field. and you will need to provide a submit button in your form. .PP .Vb 3 \& form { \& my $openid = new_action( class => \*(AqAuthenticateOpenID\*(Aq, \& moniker => \*(Aqauthenticateopenid\*(Aq ); \& \& # .... \& \& render_action( $openid ); \& outs_raw( \& Jifty\->web\->return( \& to => \*(Aq/openid_verify_done\*(Aq, \& label => _("Login with OpenID"), \& submit => $openid \& )); \& }; .Ve .PP the \f(CW\*(C`to\*(C'\fR field is for verified user to redirect to. so that you will need to implement a template called \f(CW\*(C`/openid_verify_done\*(C'\fR: .PP .Vb 3 \& template \*(Aq/openid_verify_done\*(Aq => page { \& h1 { "Done" }; \& }; .Ve .SS "Attribute Exchange" .IX Subsection "Attribute Exchange" You can retrieve information from remote profile on authentication server with OpenID Attribute Exchange service extension. .PP Set in your config.yml .PP .Vb 4 \& \- OpenID: \& ax_param: openid.ns.ax=http://openid.net/srv/ax/1.0&openid.ax.mode=fetch_request&openid.ax.type.email=http://axschema.org/contact/email&openid.ax.type.firstname=http://axschema.org/namePerson/first&openid.ax.type.lastname=http://axschema.org/namePerson/last&openid.ax.required=firstname,lastname,email \& ax_values: value.email,value.firstname,value.lastname \& ax_mapping: "{ \*(Aqemail\*(Aq: \*(Aqvalue.email\*(Aq, \*(Aqname\*(Aq: \*(Aqvalue.firstname value.lastname\*(Aq }" .Ve .PP this parameters are usuable for all OpenID endpoints supporting Attribute Exchange extension. They can be overriden in your application. Watch and/or override \f(CW\*(C`openid/wayf\*(C'\fR template from Jifty::Plugin::OpenID::View. .PP Or you can use in your view \f(CW\*(C`show(\*(Aqopenid/wayf\*(Aq,\*(Aq/url_return_to\*(Aq);\*(C'\fR. .PP \fIax_param\fR .IX Subsection "ax_param" .PP is the url send to authentication server. It defines namespace, mode, attributes types and requested attributes. .PP hints : MyOpenID use schema.openid.net schemas instead of axschema.org, Google provides lastname and firstname, Yahoo only fullname .PP \fIax_values\fR .IX Subsection "ax_values" .PP keys of attributes values read from authentication server response. .PP \fIax_mapping\fR .IX Subsection "ax_mapping" .PP mapping of receive values with our application fields in json format. .SH "AUTHORS" .IX Header "AUTHORS" Alex Vandiver, Cornelius , Yves Agostini .SH "LICENSE" .IX Header "LICENSE" Copyright 2005\-2010 Best Practical Solutions, \s-1LLC\s0. .PP This program is free software and may be modified and distributed under the same terms as Perl itself.