[Seaside] How to work with sessions

Alain Fischer alain.fischer@bluewin.ch
Mon, 1 Apr 2002 18:23:36 +0200


--Apple-Mail-1-716310906
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=US-ASCII;
	format=flowed


Here is an implementation of authenticated session with session time-out.


--Apple-Mail-1-716310906
Content-Disposition: attachment;
	filename=AFiAuthenticate.2.cs
Content-Transfer-Encoding: quoted-printable
Content-Type: application/text;
	x-mac-creator=522A6368;
	x-unix-mode=0644;
	x-mac-type=54455854;
	name="AFiAuthenticate.2.cs"

'=46rom=20Squeak3.2gamma=20of=2015=20January=202002=20[latest=20update:=20=
#4743]=20on=201=20April=202002=20at=206:14:46=20pm'!=0DSmalltalk=20=
renameClassNamed:=20#AuthenticatePage=20as:=20#AFiAuthenticatePage!=0D=
IAComponent=20subclass:=20#AFiAuthenticatePage=0D=09=
instanceVariableNames:=20'user=20password=20message=20'=0D=09=
classVariableNames:=20''=0D=09poolDictionaries:=20''=0D=09category:=20=
'Seaside-Examples'!=0DSmalltalk=20renameClassNamed:=20#AuthenticatedPage=20=
as:=20#AFiAuthenticatedPage!=0DIAComponent=20subclass:=20=
#AFiAuthenticatedPage=0D=09instanceVariableNames:=20''=0D=09=
classVariableNames:=20''=0D=09poolDictionaries:=20''=0D=09category:=20=
'Seaside-Examples'!=0DSmalltalk=20renameClassNamed:=20=
#AuthenticatedSession=20as:=20#AFiAuthenticatedSession!=0DIASession=20=
subclass:=20#AFiAuthenticatedSession=0D=09instanceVariableNames:=20'user=20=
timeOut=20'=0D=09classVariableNames:=20''=0D=09poolDictionaries:=20''=0D=09=
category:=20'Seaside-Examples'!=0D=0D!AFiAuthenticatePage=20methodsFor:=20=
'as=20yet=20unclassified'=20stamp:=20'AFi=204/1/2002=2014:20'!=0D=
authenticate=0D=0D=09(self=20isValidUserAndPassword)=0D=09=09ifTrue:=20=
[self=20return:=20user]=0D=09=09ifFalse:=20[message=20_=20'Invalid=20=
username=20or=20password']=0D!=20!=0D=0D!AFiAuthenticatePage=20=
methodsFor:=20'as=20yet=20unclassified'=20stamp:=20'AFi=204/1/2002=20=
16:25'!=0Dhtml=0D=0D=09^=20'=0D=09<h2>Authentication</h2>=0D=09<if=20=
condition=3D"@message.notNil">[message]</if>=0D=09<form=20=
sea:id=3D"authenticate">=0D=09=09<table=20cellpadding=3D"2">=0D=09=09=09=
<tr>=0D=09=09=09=09<td>User:</td>=20<td><input=20sea:id=3D"user"=20=
type=3D"text"></td>=0D=09=09=09</tr>=0D=09=09=09<tr>=0D=09=09=09=09=
<td>Password:</td>=20<td><input=20sea:id=3D"password"=20=
type=3D"password"></td>=0D=09=09=09</tr>=0D=09=09=09<tr>=0D=09=09=09=09=
<td></td>=20<td><input=20type=3D"submit"=20value=3D"Authenticate"></td>=0D=
=09=09=09</tr>=0D=09=09</table>=0D=09</form>=0D=09'=0D!=20!=0D=0D=
!AFiAuthenticatePage=20methodsFor:=20'as=20yet=20unclassified'=20stamp:=20=
'AFi=204/1/2002=2001:16'!=0DisAuthenticationPage=0D=0D=09^=20true!=20!=0D=
=0D!AFiAuthenticatePage=20methodsFor:=20'as=20yet=20unclassified'=20=
stamp:=20'AFi=204/1/2002=2017:26'!=0DisValidUserAndPassword=0D=0D=09^=20=
{'admin'->'secret'.=0D=09'administrator'->'secret'.=0D=09=
'viewer'->'view'.=0D=09'modifier'->'modify'}=0D=09=09anySatisfy:=20=
[:each=20|=20each=20key=20=3D=20user=20and:=20[each=20value=20=3D=20=
password]]=0D!=20!=0D=0D!AFiAuthenticatePage=20methodsFor:=20'as=20yet=20=
unclassified'=20stamp:=20'AFi=204/1/2002=2016:46'!=0Dmessage:=20aMessage=0D=
=0D=09message=20:=3D=20aMessage!=20!=0D=0D=0D!AFiAuthenticatedPage=20=
methodsFor:=20'as=20yet=20unclassified'=20stamp:=20'AFi=204/1/2002=20=
17:30'!=0Dhtml=0D=0D=09^=20'=0D=09<h1>Hello,=20[session.user]!!!!</h1>=0D=
=09<a=20href=3D"@redisplay">redisplay</a><br>=0D=09<a=20=
href=3D"@logout">logout</a>=0D=09'=0D!=20!=0D=0D!AFiAuthenticatedPage=20=
methodsFor:=20'as=20yet=20unclassified'=20stamp:=20'AFi=204/1/2002=20=
16:26'!=0Dlogout=0D=0D=09^=20session=20logout!=20!=0D=0D=
!AFiAuthenticatedPage=20methodsFor:=20'as=20yet=20unclassified'=20stamp:=20=
'AFi=204/1/2002=2017:31'!=0Dredisplay=0D=0D=09^=20nil!=20!=0D=0D=0D=
!AFiAuthenticatedSession=20methodsFor:=20'as=20yet=20unclassified'=20=
stamp:=20'AFi=204/1/2002=2001:47'!=0DisTimedOut=0D=0D=09^=20timeOut=20=
isExpired.=0D!=20!=0D=0D!AFiAuthenticatedSession=20methodsFor:=20'as=20=
yet=20unclassified'=20stamp:=20'AFi=204/1/2002=2014:34'!=0Dlogout=0D=0D=09=
user=20_=20nil=0D!=20!=0D=0D!AFiAuthenticatedSession=20methodsFor:=20'as=20=
yet=20unclassified'=20stamp:=20'AFi=204/1/2002=2017:28'!=0D=
timeOutSeconds=0D=0D=09^=2010.=0D!=20!=0D=0D!AFiAuthenticatedSession=20=
methodsFor:=20'as=20yet=20unclassified'=20stamp:=20'AFi=204/1/2002=20=
14:24'!=0DupdateTimeOut=0D=0D=09timeOut=20:=3D=20Delay=20forSeconds:=20=
self=20timeOutSeconds.=0D=09timeOut=20schedule!=20!=0D=0D=
!AFiAuthenticatedSession=20methodsFor:=20'request=20handling'=20stamp:=20=
'AFi=204/1/2002=2017:45'!=0DaboutToViewPage:=20aPage=0D=0D=09((aPage=20=
respondsTo:=20#isAuthenticationPage)=20and:=20[aPage=20=
isAuthenticationPage])=20ifFalse:=0D=09=09[user=20isNil=20=0D=09=09=09=
ifTrue:=20[user=20:=3D=20aPage=20callPage:=20(AFiAuthenticatePage=20=
new)]=0D=09=09=09ifFalse:=20[self=20isTimedOut=20ifTrue:=0D=09=09=09=09=
[user=20:=3D=20aPage=20callPage:=20(AFiAuthenticatePage=20new=20message:=20=
'Your=20session=20has=20expired')]]].=0D=09self=20updateTimeOut.=0D=09=
super=20aboutToViewPage:=20aPage!=20!=0D=0D!AFiAuthenticatedSession=20=
methodsFor:=20'initialize-release'=20stamp:=20'AFi=204/1/2002=2014:25'!=0D=
initialize=0D=0D=09timeOut=20:=3D=20Delay=20forSeconds:=20self=20=
timeOutSeconds.=0D=09timeOut=20schedule.=0D=09super=20initialize!=20!=0D=0D=
AFiAuthenticatedPage=20removeSelector:=20#isAuthenticationPage!=0D=
AFiAuthenticatedPage=20removeSelector:=20#redraw!=0DAFiAuthenticatePage=20=
removeSelector:=20#submit!=0D=

--Apple-Mail-1-716310906--