Hi David,
this was effectively a bug in RIFE and it has been fixed. You current
source code should 'just work' if you download the latest snapshot from:
http://rifers.org/downloads/rife/snapshots/rife-1.4.1-snapshot-20060321/
Let me know if it works.
Best regards,
Geert
On 20-mrt-06, at 18:37, David Herbert wrote:
I am trying to implement the following functionality within RIFE:
(1) User logs in to site with username/password.
(2) There is additional information about users held in a
Postgresql database table. A user can have one or more roles, each
of which can be associated with an area. Multiple roles are
possible within the same area. So, once the user is logged in (and
globalvar "authid" is set), I want to be able to do one of the
following:
(a) If the user has a unique role/area combination, take them to
the home page for their user type. No problem (and this works fine).
(b) If the user has >1 role, put up a form with a select list and a
button to enable them to pick which role they want to perform.
I have implemented the role/area chooser as an embedded element of
"home", just as I have the login box (as per the numberguess
example). This is so that every subsequent template in the site can
embed these elements which will tell the user who they're logged in
as and what role they have in which area. The role and area will
be set as globalvars "roleid" and "aaid".
The embedded elements perform as expected up to a point. The login
screen comes up, I log in and it correctly reports who I am. When
I have multiple roles it correctly outputs the form to enable me to
select roles. The form submission points back to the parent
element "home". I believe this from my reading of the manual to be
correct.
The maddening thing that happens when I select my role and click
the submit button is that I'm returned to the login box once more.
The "authid" globalvar has somehow been lost as a result of doing
the submission within the embedded element. I can't see what I'm
doing wrong, and have gotten totally confused by this. I don't see
how I can debug it either. I assume something in one or more of my
XML files is wrong, but I have really got stuck as to what.
site file:
--------------------------------------------------------------------
<site>
<globalvar name="authid"/>
<globalvar name="roleid"/>
<globalvar name="aaid"/>
<arrival destid="HOME"/>
<departure srcid="LOGOUT"/>
<element id="AUTH" file="auth.xml"/>
<element id="LOGOUT" file="rife/logout/passthrough/
database.xml" url="/logout">
<property name="datasource"><datasource>postgresql_live</
datasource></property>
<flowlink srcexit="logged_out" snapback="true"/>
</element>
<element id="LOGIN_BOX" file="credentials.xml" inherits="AUTH">
<flowlink srcexit="logout" destid="LOGOUT"/>
</element>
<element id="ROLE_AREA_CHOOSER" file="roleareachooser.xml">
</element>
<element id="HOME" file="home.xml" url="/home">
<property name="template_name">home</property>
<exit name="register"/>
<exit name="forgot_password"/>
<flowlink srcexit="register" destid="REGISTER"/>
<flowlink srcexit="forgot_password" destid="FORGOT_PASSWORD"/>
</element>
<element id="REGISTER" file="useradmin/register.xml" url="/
register">
<flowlink srcexit="home" destid="HOME"/>
</element>
<element id="FORGOT_PASSWORD" file="useradmin/
forgot_password.xml" url="/forgot_password">
<flowlink srcexit="home" destid="HOME"/>
</element>
</site>
roleareachooser.xml
------------------------------------------------------------
<element implementation="uk.co.communitytech.RoleAreaChooser">
<submission name="role_area_chooser">
<param name="role_area"/>
</submission>
</element>
auth.xml
-------------------------------------------------------------
<element extends="rife/authenticated/database.xml">
<property name="datasource"><datasource>postgresql_live</
datasource></property>
<property name="template_name">login_box</property>
<submission name="credentials">
<param name="login"/>
<param name="password"/>
</submission>
<childtrigger name="authid"/>
</element>
home.xml
---------------------------------------------------------------
<element implementation="uk.co.communitytech.Home">
</element>
credentials.xml
----------------------------------------------------------------
<element implementation="uk.co.communitytech.Credentials">
<submission name="logout"/>
<exit name="logout"/>
</element>
roleareachooser.html
----------------------------------------------------------------
<!--V 'role_area_info'/-->
<!--BV 'role_area_info'-->
<!--/BV-->
<!--B 'role_area_choices'-->
<p>You have more than one role/admin area combination available to
you.<br/>Please
choose the one you want to use from the list below:</p>
<form name="role_area_chooser" action="[!V
'SUBMISSION:FORM:role_area_chooser'/]" method="post">
<!--V 'SUBMISSION:PARAMS:role_area_chooser'/-->
<!--V 'FORM:SELECT:role_area'/-->
<input type="submit" value="Choose">
</form>
<!--/B-->
<!--B 'unique_role_area'-->
Current role : <!--V 'role_name'/--> for <!--V 'admin_area_name'/-->
<!--/B-->
home.html
-----------------------------------------------------------------
<!--I 'header'/-->
<h2>Welcome</h2>
<p>Your login username will normally be your email address for access
to reports.<br/>If you don't yet have an account you can
<a href="[!V 'EXIT:QUERY:register'/]">register</a> for one.
</p>
<!--V 'ELEMENT:.LOGIN_BOX'/-->
<p><a href="[!V 'EXIT:QUERY:forgot_password'/]">I've forgotten my
password!</a></p>
<!--V 'ELEMENT:.ROLE_AREA_CHOOSER'/-->
<!--I 'footer'/-->
_______________________________________________
Rife-users mailing list
[email protected]
http://lists.uwyn.com/mailman/listinfo/rife-users
--
Geert Bevin Uwyn bvba GTalk: [EMAIL PROTECTED]
"Use what you need" Avenue de Scailmont 34 Skype: gbevin
http://www.uwyn.com 7170 Manage, Belgium AIM: geertbevin
gbevin at uwyn dot com Tel: +32 64 84 80 03 Mobile: +32 477 302 599
PGP Fingerprint : 4E21 6399 CD9E A384 6619 719A C8F4 D40D 309F D6A9
Public PGP key : available at servers pgp.mit.edu, wwwkeys.pgp.net
_______________________________________________
Rife-users mailing list
[email protected]
http://lists.uwyn.com/mailman/listinfo/rife-users