It becomes apparent that there is no such class as VelocitySiteLayout, so the HowTo VelocitySite documentation is incorrect.
If I understand correctly Scott's configuration from the XML file covers the screens security. But in addition I want to change the layout used for different screens. So now I have no idea how to set 3 different layouts for 3 different roles. Has anybody done this? David -----Original Message----- From: David Wynter [mailto:[EMAIL PROTECTED]] Sent: 10 April 2002 19:19 To: Turbine Users List Subject: [ANS]: How to approach 3 roles with separate screens? On reading further down the VelocitySite howto it tells me to subclass VelocitySiteLayout to override the layouts used. Fair enough I'll give it a go. Sorry to have disturbed you from your work if you are reading this. David -----Original Message----- From: David Wynter [mailto:[EMAIL PROTECTED]] Sent: 10 April 2002 18:42 To: Turbine Users List Subject: RE: How to approach 3 roles with separate screens? I still seem to not understand how this works, in the code excerpt in the earlier email below the calls to data.setLayoutTemplate(...) do not seem to have any effect. The Admin.vm etc. template files are all in the app/layouts directory but it only ever uses default.vm? Am I making this call in the wrong place? I tried putting the following at the top of default.vm with no effect either, #if ( $data.getACL.hasRole("Administrator") ) $data.setLayoutTemplate("/Admin.vm") #end David -----Original Message----- From: Weaver, Scott [mailto:[EMAIL PROTECTED]] Sent: 10 April 2002 17:44 To: 'Turbine Users List' Subject: RE: How to approach 3 roles with separate screens? Sure, I actually donated a rough draft of the original into the new Turbine 3 project. I will send you the most recent one I am using in production when I get a free moment. Scott > -----Original Message----- > From: David Wynter [mailto:[EMAIL PROTECTED]] > Sent: Wednesday, April 10, 2002 10:46 AM > To: Turbine Users List > Subject: RE: How to approach 3 roles with separate screens? > > > Scott, > > I just realised that what I have below is not enough. Since I > use actions > for all my screens (all forms you see). These need to be > secured just in > case someone copies a HTTP POST and uses it. So your XML > definition of which > permissions (or roles in my case) can use which actions and screens is > looking increasingly like the only answer. Any chance of > sharing the code > for reading the XML file in? > > thanks > > David > > -----Original Message----- > From: David Wynter [mailto:[EMAIL PROTECTED]] > Sent: 10 April 2002 14:50 > To: Turbine Users List > Subject: RE: How to approach 3 roles with separate screens? > > > hi Scott, > > I had picked up on the fact you had used an XML file to > define mapping from > template to security from the earlier mail in the archive. > This might be a > bit of an overkill for me since all screens are secure and > all screens are > specific to a role. > > From what i have been reading and what you are saying I can do the > following. I think? > > In my LoginUser.doPerform( RunData data) (common to all roles > in actions > directory) > > ...after the data.save() call... > //check if the User ( from the http request ) > //has role and then setLayoutTemplate and > setScreenTemplate > if( acl.hasRole("Administrator") ) > { > data.setLayoutTemplate("Admin.vm"); > data.setScreenTemplate("Admin/Welcome.vm"); > } > else if( acl.hasRole("Message User") ) > { > data.setLayoutTemplate("MsgUser.vm"); > data.setScreenTemplate("MsgUser/Welcome.vm"); > } > else if( acl.hasRole("Extract User") ) > { > data.setLayoutTemplate("ExtractUser.vm"); > data.setScreenTemplate("ExtractUser/Welcome.vm"); > } > ... > > The LayoutTemplates all reside in the template/layout directory and > effectively replace the Default.vm. They all refer to a menu.vm in the > appropriate subdirectory of the template/navigations directory. > > For security in each of the screens referenced by the menu.vm > in each role > subdirectory I have subclassed VelocitySecureScreen and called it > Default.java and put it in the appropriate subdirectory (I > now realise I > could have just one Default.java and do what you do , get > their acl check > the role is appropriate for the screen). Each of these checks for the > appropriate role (acl.hasRole) and directs them to the login layout an > screen template if they don't have the Role. > > Have I covered everything here? I have just started coding > this new stuff so > stop me if I am making a mistake here. I must say valves in > T3 sounds a much > cleaner pattern and easier for old folk like me to understand. > > Regards and your advice is much appreciated. > > David > > > -----Original Message----- > From: Weaver, Scott [mailto:[EMAIL PROTECTED]] > Sent: 10 April 2002 14:09 > To: 'Turbine Users List' > Subject: RE: How to approach 3 roles with separate screens? > > > > But I am not sure how to tie this in with the screens, > > do I have 3 > > subclasses from VelocitySecureScreen in subdirectories that > match the > > pattern on the template subdirectories? > > > com.yourapp.app.modules.screens.{directory_structure_under_scr > eens}.Template > Name.class > > or if you want all screens in that directory to use the same > screen class: > > com.yourapp.app.modules.screens.{directory_structure_under_scr > eens}.Default. > class > > > Is this the best > > approach? Will it > > carry over to Turbine 3? > > From what I know, Turbine 3 will support the classic turbine layout, > navigation and screen methodology as an option. However, I > think the push > will be to use the valve architecture T3 implements to > provide for things > like view control (templates), template security, etc. > > I personally have use a single screen class for my entire > application. The > isAuthorized() method checks a custom xml file (using the > template's name) > via a session tool/service combination to figure out whether > or not the > template is secure and if it is secure, I use the session > tool to validate > the current users ACL against the requirements for that > template. This > allows quite a it more flexibility then having to hard code > security into > individual screen classes. > > If you are relying heavily on code in your screen classes, I > would highly > recommend moving that logic into pull tools. I say this > because (someone > correct me if I'm wrong) that appears to be the T3 way of > doing things as > opposed to screen classes. > > > Scott > > > > > > -----Original Message----- > > From: David Wynter [mailto:[EMAIL PROTECTED]] > > Sent: Wednesday, April 10, 2002 4:14 AM > > To: Turbine-User > > Subject: How to approach 3 roles with separate screens? > > > > > > I have been through the archives to see how to best approach > > my requirement. > > I find I am still missing something. > > > > I currently have a single role with one permission and use a > > pull tool and > > just one subclass of VelocitySecureScreen for all the screens > > used by that > > role. I need to add 2 more roles (all need security) each > > with a single > > permission each with unique screens (there are no screens > > which are shared > > by the roles). > > > > I found the mail in the archive > > http://marc.theaimsgroup.com/?l=turbine-user&m=101043436816718&w=2 > > This suggests using subdirectories for weak and secure > > screens. I assume I > > can use the same approach and have 3 template sub-directries, > > one for each > > role. But I am not sure how to tie this in with the screens, > > do I have 3 > > subclasses from VelocitySecureScreen in subdirectories that > match the > > pattern on the template subdirectories? Is this the best > > approach? Will it > > carry over to Turbine 3? > > > > thanks > > > > David > > > > > > > > -- > > To unsubscribe, e-mail: > <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: > <mailto:[EMAIL PROTECTED]> > > > -- > To unsubscribe, e-mail: > <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: > <mailto:[EMAIL PROTECTED]> > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
