[Lift] Re: Menu access control not working as expected
Glenn, My original design was a bad one... I was mixing access control and early responses... I've split the concept of access control (which stays the way it is) and sending an early response (rather than going through the whole rendering pipeline). With the latest spin of Lift, try putting this in Boot: // Build SiteMap val entries = Menu(Loc(Home, List(index), Home)) :: Menu(Loc(Fake, List(fakeout), Fake Out, Loc.EarlyResponse( () = Full(RedirectResponse(/user_mgt/login)). filter(ignore = !User.loggedIn_?) ))) :: User.sitemap Note that TestAccess became EarlyResponse. Access control works the way it used to, but you can set the redirect before any other rendering happens. Please let me know if this works. Thanks, David On Thu, May 14, 2009 at 4:22 PM, glenn gl...@exmbly.com wrote: David, I changed default html in your menu example a bit and the results were similar to using LocGroup - the menu item won't display. here's the change: div class=column span-6 colborder sidebar hr class=space / !-- lift:Menu.builder /-- lift:Menu.item name=Fake liFake Out/li /lift:Menu.item div lift:snippet type=msgs/ hr class=space / /div /div It seems this only works if you stick to outputting the full menu in your templates with lift:Menu.builder/. Anything else and it's broken. Glenn... On May 14, 7:31 am, glenn gl...@exmbly.com wrote: David, Your sample app works. Mine doesn't. I even put your sample Menu item in my app, but in it's own LocGroup, and it does not work. It seems the only difference is that I'm separating my menus into groups. Could that be the culprit? Glenn... On May 13, 9:27 pm, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, Sorry... there was a bug in the code. I've fixed it. It'll be available when this build finishes: http://hudson.scala-tools.org/job/Lift/949/console Please remember to do an mvn -U clean install I'm enclosing the sample app that I used to test. Please note that you should only return Full(LiftResponse) if you want to redirect... not if you want to stay on the page. Thanks, David On Wed, May 13, 2009 at 8:51 PM, glenn gl...@exmbly.com wrote: David, Moving CRUDify to the object fixed the compiler error. However, back on the original menu issue, using TestAccess, as you suggest, still did not work as expected. The menu item doesn't display. Maybe I'm missing something important. Sorry to be a bother, but hope you can help. Here's my menu code: def logged:Box[LiftResponse] = if(User.loggedIn_?){ Full(RedirectResponse(/Login)) }else{ Full(PlainTextResponse(No such location)) } val testLogin = TestAccess(() = logged) override def deleteMenuLoc = Empty override def createMenuLoc: Box[Menu] = Full(Menu(Loc(Create +Prefix, createPath, Continue..., locSnippets, LocGroup(company), testLogin, Loc.Template(createTemplate On May 13, 4:03 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 3:30 PM, glenn gl...@exmbly.com wrote: Thanks for the heads-up on the 1.1-SNAPSHOT version, but now, when I compile, I get errors. I don't think this has anything to do with menu redirection, but, I have a Company class defined like so: CRUDify should be mixed into the Meta object not into th instance class. In this case, move CRUDify to object Company. This was the original intent with CRUDify, but I did not put the proper constraints on it in 1.0... I fixed that up in 1.1. class Company extends LongKeyedMapper[Company] with Address[Company] with IdPK with CRUDify[Long,Company] { ... } And, this is what my compiler output tells me: illegal inheritance; self-type com.exmbly.scala.apbul.model.Company does not conform to net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company]'s selftype net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company] with com.exmbly.scala.apbul.model.Company with net.liftweb.mapper.KeyedMetaMapper [Long,com.exmbly.scala.apbul.model.Company] Was something changed in the definition of Crudify? What do I need to change in my code? The error is a bit confusing. Glenn... On May 13, 2:58 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 2:19 PM, glenn gl...@exmbly.com wrote: David, Pardon my ignorance, but I see a Test case class in the Lift 1.0 api for Loc, but not TestAccess, which seems similar. I added TestAccess to 1.1-SNAPSHOT last night. It's possible to
[Lift] Re: Menu access control not working as expected
On Fri, May 15, 2009 at 7:49 AM, glenn gl...@exmbly.com wrote: David, Yes, your EarlyAccess Loc did the trick. Thank you for all your help. Thanks for the great suggestion. Party on! Glenn... On May 15, 6:54 am, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, My original design was a bad one... I was mixing access control and early responses... I've split the concept of access control (which stays the way it is) and sending an early response (rather than going through the whole rendering pipeline). With the latest spin of Lift, try putting this in Boot: // Build SiteMap val entries = Menu(Loc(Home, List(index), Home)) :: Menu(Loc(Fake, List(fakeout), Fake Out, Loc.EarlyResponse( () = Full(RedirectResponse(/user_mgt/login)). filter(ignore = !User.loggedIn_?) ))) :: User.sitemap Note that TestAccess became EarlyResponse. Access control works the way it used to, but you can set the redirect before any other rendering happens. Please let me know if this works. Thanks, David On Thu, May 14, 2009 at 4:22 PM, glenn gl...@exmbly.com wrote: David, I changed default html in your menu example a bit and the results were similar to using LocGroup - the menu item won't display. here's the change: div class=column span-6 colborder sidebar hr class=space / !-- lift:Menu.builder /-- lift:Menu.item name=Fake liFake Out/li /lift:Menu.item div lift:snippet type=msgs/ hr class=space / /div /div It seems this only works if you stick to outputting the full menu in your templates with lift:Menu.builder/. Anything else and it's broken. Glenn... On May 14, 7:31 am, glenn gl...@exmbly.com wrote: David, Your sample app works. Mine doesn't. I even put your sample Menu item in my app, but in it's own LocGroup, and it does not work. It seems the only difference is that I'm separating my menus into groups. Could that be the culprit? Glenn... On May 13, 9:27 pm, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, Sorry... there was a bug in the code. I've fixed it. It'll be available when this build finishes: http://hudson.scala-tools.org/job/Lift/949/console Please remember to do an mvn -U clean install I'm enclosing the sample app that I used to test. Please note that you should only return Full(LiftResponse) if you want to redirect... not if you want to stay on the page. Thanks, David On Wed, May 13, 2009 at 8:51 PM, glenn gl...@exmbly.com wrote: David, Moving CRUDify to the object fixed the compiler error. However, back on the original menu issue, using TestAccess, as you suggest, still did not work as expected. The menu item doesn't display. Maybe I'm missing something important. Sorry to be a bother, but hope you can help. Here's my menu code: def logged:Box[LiftResponse] = if(User.loggedIn_?){ Full(RedirectResponse(/Login)) }else{ Full(PlainTextResponse(No such location)) } val testLogin = TestAccess(() = logged) override def deleteMenuLoc = Empty override def createMenuLoc: Box[Menu] = Full(Menu(Loc(Create +Prefix, createPath, Continue..., locSnippets, LocGroup(company), testLogin, Loc.Template(createTemplate On May 13, 4:03 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 3:30 PM, glenn gl...@exmbly.com wrote: Thanks for the heads-up on the 1.1-SNAPSHOT version, but now, when I compile, I get errors. I don't think this has anything to do with menu redirection, but, I have a Company class defined like so: CRUDify should be mixed into the Meta object not into th instance class. In this case, move CRUDify to object Company. This was the original intent with CRUDify, but I did not put the proper constraints on it in 1.0... I fixed that up in 1.1. class Company extends LongKeyedMapper[Company] with Address[Company] with IdPK with CRUDify[Long,Company] { ... } And, this is what my compiler output tells me: illegal inheritance; self-type com.exmbly.scala.apbul.model.Company does not conform to net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company]'s selftype net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company] with com.exmbly.scala.apbul.model.Company with net.liftweb.mapper.KeyedMetaMapper [Long,com.exmbly.scala.apbul.model.Company] Was
[Lift] Re: Menu access control not working as expected
David, Your sample app works. Mine doesn't. I even put your sample Menu item in my app, but in it's own LocGroup, and it does not work. It seems the only difference is that I'm separating my menus into groups. Could that be the culprit? Glenn... On May 13, 9:27 pm, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, Sorry... there was a bug in the code. I've fixed it. It'll be available when this build finishes:http://hudson.scala-tools.org/job/Lift/949/console Please remember to do an mvn -U clean install I'm enclosing the sample app that I used to test. Please note that you should only return Full(LiftResponse) if you want to redirect... not if you want to stay on the page. Thanks, David On Wed, May 13, 2009 at 8:51 PM, glenn gl...@exmbly.com wrote: David, Moving CRUDify to the object fixed the compiler error. However, back on the original menu issue, using TestAccess, as you suggest, still did not work as expected. The menu item doesn't display. Maybe I'm missing something important. Sorry to be a bother, but hope you can help. Here's my menu code: def logged:Box[LiftResponse] = if(User.loggedIn_?){ Full(RedirectResponse(/Login)) }else{ Full(PlainTextResponse(No such location)) } val testLogin = TestAccess(() = logged) override def deleteMenuLoc = Empty override def createMenuLoc: Box[Menu] = Full(Menu(Loc(Create +Prefix, createPath, Continue..., locSnippets, LocGroup(company), testLogin, Loc.Template(createTemplate On May 13, 4:03 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 3:30 PM, glenn gl...@exmbly.com wrote: Thanks for the heads-up on the 1.1-SNAPSHOT version, but now, when I compile, I get errors. I don't think this has anything to do with menu redirection, but, I have a Company class defined like so: CRUDify should be mixed into the Meta object not into th instance class. In this case, move CRUDify to object Company. This was the original intent with CRUDify, but I did not put the proper constraints on it in 1.0... I fixed that up in 1.1. class Company extends LongKeyedMapper[Company] with Address[Company] with IdPK with CRUDify[Long,Company] { ... } And, this is what my compiler output tells me: illegal inheritance; self-type com.exmbly.scala.apbul.model.Company does not conform to net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company]'s selftype net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company] with com.exmbly.scala.apbul.model.Company with net.liftweb.mapper.KeyedMetaMapper [Long,com.exmbly.scala.apbul.model.Company] Was something changed in the definition of Crudify? What do I need to change in my code? The error is a bit confusing. Glenn... On May 13, 2:58 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 2:19 PM, glenn gl...@exmbly.com wrote: David, Pardon my ignorance, but I see a Test case class in the Lift 1.0 api for Loc, but not TestAccess, which seems similar. I added TestAccess to 1.1-SNAPSHOT last night. It's possible to write something in 1.0, but it's a lot harder... basically, you have to write a Snippet and do a custom LocParam. Most of us are on 1.1-SNAPSHOT and the sites I deploy are on 1.1-SNAPSHOT and there hasn't been an instability due to working on trunk-head that I've seen. Glenn... On May 13, 6:58 am, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, I've added another Loc param: /** * Allows extra access testing for a given menu location such that * you can build a menu that is displayed but redirects the user to a login * page if they are not logged in */ case class TestAccess(func: () = Box[LiftResponse]) extends LocParam This will let you write a function that tests access for the page and return a RedirectResponse if the user needs to log in. It will not impact the display of the menu item. Hope this helps. Thanks, David On Tue, May 12, 2009 at 5:23 PM, glenn gl...@exmbly.com wrote: Hmm, Here's my complete menu list for this LocGroup: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote, LocGroup(quote), loggedIn )) val businessquote = Menu(Loc(businessquote, List(quote, business), Commercial Quote, LocGroup(quote))) val lifequote = Menu(Loc(lifequote, List(quote, life), Life Ins. Quote, LocGroup(quote))) val autoquote = Menu(Loc(autoquote, List(quote, auto), Auto Quote, LocGroup(quote)))
[Lift] Re: Menu access control not working as expected
David, I changed default html in your menu example a bit and the results were similar to using LocGroup - the menu item won't display. here's the change: div class=column span-6 colborder sidebar hr class=space / !-- lift:Menu.builder /-- lift:Menu.item name=Fake liFake Out/li /lift:Menu.item div lift:snippet type=msgs/ hr class=space / /div /div It seems this only works if you stick to outputting the full menu in your templates with lift:Menu.builder/. Anything else and it's broken. Glenn... On May 14, 7:31 am, glenn gl...@exmbly.com wrote: David, Your sample app works. Mine doesn't. I even put your sample Menu item in my app, but in it's own LocGroup, and it does not work. It seems the only difference is that I'm separating my menus into groups. Could that be the culprit? Glenn... On May 13, 9:27 pm, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, Sorry... there was a bug in the code. I've fixed it. It'll be available when this build finishes:http://hudson.scala-tools.org/job/Lift/949/console Please remember to do an mvn -U clean install I'm enclosing the sample app that I used to test. Please note that you should only return Full(LiftResponse) if you want to redirect... not if you want to stay on the page. Thanks, David On Wed, May 13, 2009 at 8:51 PM, glenn gl...@exmbly.com wrote: David, Moving CRUDify to the object fixed the compiler error. However, back on the original menu issue, using TestAccess, as you suggest, still did not work as expected. The menu item doesn't display. Maybe I'm missing something important. Sorry to be a bother, but hope you can help. Here's my menu code: def logged:Box[LiftResponse] = if(User.loggedIn_?){ Full(RedirectResponse(/Login)) }else{ Full(PlainTextResponse(No such location)) } val testLogin = TestAccess(() = logged) override def deleteMenuLoc = Empty override def createMenuLoc: Box[Menu] = Full(Menu(Loc(Create +Prefix, createPath, Continue..., locSnippets, LocGroup(company), testLogin, Loc.Template(createTemplate On May 13, 4:03 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 3:30 PM, glenn gl...@exmbly.com wrote: Thanks for the heads-up on the 1.1-SNAPSHOT version, but now, when I compile, I get errors. I don't think this has anything to do with menu redirection, but, I have a Company class defined like so: CRUDify should be mixed into the Meta object not into th instance class. In this case, move CRUDify to object Company. This was the original intent with CRUDify, but I did not put the proper constraints on it in 1.0... I fixed that up in 1.1. class Company extends LongKeyedMapper[Company] with Address[Company] with IdPK with CRUDify[Long,Company] { ... } And, this is what my compiler output tells me: illegal inheritance; self-type com.exmbly.scala.apbul.model.Company does not conform to net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company]'s selftype net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company] with com.exmbly.scala.apbul.model.Company with net.liftweb.mapper.KeyedMetaMapper [Long,com.exmbly.scala.apbul.model.Company] Was something changed in the definition of Crudify? What do I need to change in my code? The error is a bit confusing. Glenn... On May 13, 2:58 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 2:19 PM, glenn gl...@exmbly.com wrote: David, Pardon my ignorance, but I see a Test case class in the Lift 1.0 api for Loc, but not TestAccess, which seems similar. I added TestAccess to 1.1-SNAPSHOT last night. It's possible to write something in 1.0, but it's a lot harder... basically, you have to write a Snippet and do a custom LocParam. Most of us are on 1.1-SNAPSHOT and the sites I deploy are on 1.1-SNAPSHOT and there hasn't been an instability due to working on trunk-head that I've seen. Glenn... On May 13, 6:58 am, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, I've added another Loc param: /** * Allows extra access testing for a given menu location such that * you can build a menu that is displayed but redirects the user to a login * page if they are not logged in */ case class TestAccess(func: () = Box[LiftResponse]) extends LocParam This will let you write a function that tests access for the page and return a RedirectResponse if the user needs to log in. It will not
[Lift] Re: Menu access control not working as expected
Glenn, I've added another Loc param: /** * Allows extra access testing for a given menu location such that * you can build a menu that is displayed but redirects the user to a login * page if they are not logged in */ case class TestAccess(func: () = Box[LiftResponse]) extends LocParam This will let you write a function that tests access for the page and return a RedirectResponse if the user needs to log in. It will not impact the display of the menu item. Hope this helps. Thanks, David On Tue, May 12, 2009 at 5:23 PM, glenn gl...@exmbly.com wrote: Hmm, Here's my complete menu list for this LocGroup: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote, LocGroup(quote), loggedIn )) val businessquote = Menu(Loc(businessquote, List(quote, business), Commercial Quote, LocGroup(quote))) val lifequote = Menu(Loc(lifequote, List(quote, life), Life Ins. Quote, LocGroup(quote))) val autoquote = Menu(Loc(autoquote, List(quote, auto), Auto Quote, LocGroup(quote))) val homequote = Menu(Loc(homequote, List(quote, home), Homeowners Quote, LocGroup(quote))) val medicarequote = Menu(Loc(medicarequote, List(quote, medicare), Medicare Sup. Quote, LocGroup(quote))) List (groupquote,businessquote,lifequote,autoquote,homequote,medicarequote) } I want to control page access so that whenever the user clicks on one of the above menu items and isn't logged they are redirected to the login page. As I understand it, there are no submenus here, only siblings. Where would I put the loggedIn function to make this work? On May 12, 5:02 pm, David Pollak feeder.of.the.be...@gmail.com wrote: If a top-level menu item is not accessible, then none of its children are accessible. SiteMap does not display any pages that are inaccessible. In the example, you've got all the menus controlled by the loggedIn If() clause and that's blocking access to menu and thus the menu is not displayed. On Tue, May 12, 2009 at 4:54 PM, glenn gl...@exmbly.com wrote: I have a menu defined as follows: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote,loggedIn, LocGroup(quote))) More menu items } and an If LocParam to check if the user is logged in: val loggedIn = If(() = User.loggedIn_?, () = RedirectResponse(/login)) When the sitemap is displayed, the menu item is not visible if the user isn't logged in. This is not the behavior expected. The user should be able to click on the menu item and be redirected to the login page. Any ideas as to what's going on here. Am I even using the right mechanism to control page access? Glenn... -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Git some:http://github.com/dpp -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Git some: http://github.com/dpp --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Menu access control not working as expected
David, Pardon my ignorance, but I see a Test case class in the Lift 1.0 api for Loc, but not TestAccess, which seems similar. Glenn... On May 13, 6:58 am, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, I've added another Loc param: /** * Allows extra access testing for a given menu location such that * you can build a menu that is displayed but redirects the user to a login * page if they are not logged in */ case class TestAccess(func: () = Box[LiftResponse]) extends LocParam This will let you write a function that tests access for the page and return a RedirectResponse if the user needs to log in. It will not impact the display of the menu item. Hope this helps. Thanks, David On Tue, May 12, 2009 at 5:23 PM, glenn gl...@exmbly.com wrote: Hmm, Here's my complete menu list for this LocGroup: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote, LocGroup(quote), loggedIn )) val businessquote = Menu(Loc(businessquote, List(quote, business), Commercial Quote, LocGroup(quote))) val lifequote = Menu(Loc(lifequote, List(quote, life), Life Ins. Quote, LocGroup(quote))) val autoquote = Menu(Loc(autoquote, List(quote, auto), Auto Quote, LocGroup(quote))) val homequote = Menu(Loc(homequote, List(quote, home), Homeowners Quote, LocGroup(quote))) val medicarequote = Menu(Loc(medicarequote, List(quote, medicare), Medicare Sup. Quote, LocGroup(quote))) List (groupquote,businessquote,lifequote,autoquote,homequote,medicarequote) } I want to control page access so that whenever the user clicks on one of the above menu items and isn't logged they are redirected to the login page. As I understand it, there are no submenus here, only siblings. Where would I put the loggedIn function to make this work? On May 12, 5:02 pm, David Pollak feeder.of.the.be...@gmail.com wrote: If a top-level menu item is not accessible, then none of its children are accessible. SiteMap does not display any pages that are inaccessible. In the example, you've got all the menus controlled by the loggedIn If() clause and that's blocking access to menu and thus the menu is not displayed. On Tue, May 12, 2009 at 4:54 PM, glenn gl...@exmbly.com wrote: I have a menu defined as follows: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote,loggedIn, LocGroup(quote))) More menu items } and an If LocParam to check if the user is logged in: val loggedIn = If(() = User.loggedIn_?, () = RedirectResponse(/login)) When the sitemap is displayed, the menu item is not visible if the user isn't logged in. This is not the behavior expected. The user should be able to click on the menu item and be redirected to the login page. Any ideas as to what's going on here. Am I even using the right mechanism to control page access? Glenn... -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Git some:http://github.com/dpp -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Git some:http://github.com/dpp --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Menu access control not working as expected
On Wed, May 13, 2009 at 2:19 PM, glenn gl...@exmbly.com wrote: David, Pardon my ignorance, but I see a Test case class in the Lift 1.0 api for Loc, but not TestAccess, which seems similar. I added TestAccess to 1.1-SNAPSHOT last night. It's possible to write something in 1.0, but it's a lot harder... basically, you have to write a Snippet and do a custom LocParam. Most of us are on 1.1-SNAPSHOT and the sites I deploy are on 1.1-SNAPSHOT and there hasn't been an instability due to working on trunk-head that I've seen. Glenn... On May 13, 6:58 am, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, I've added another Loc param: /** * Allows extra access testing for a given menu location such that * you can build a menu that is displayed but redirects the user to a login * page if they are not logged in */ case class TestAccess(func: () = Box[LiftResponse]) extends LocParam This will let you write a function that tests access for the page and return a RedirectResponse if the user needs to log in. It will not impact the display of the menu item. Hope this helps. Thanks, David On Tue, May 12, 2009 at 5:23 PM, glenn gl...@exmbly.com wrote: Hmm, Here's my complete menu list for this LocGroup: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote, LocGroup(quote), loggedIn )) val businessquote = Menu(Loc(businessquote, List(quote, business), Commercial Quote, LocGroup(quote))) val lifequote = Menu(Loc(lifequote, List(quote, life), Life Ins. Quote, LocGroup(quote))) val autoquote = Menu(Loc(autoquote, List(quote, auto), Auto Quote, LocGroup(quote))) val homequote = Menu(Loc(homequote, List(quote, home), Homeowners Quote, LocGroup(quote))) val medicarequote = Menu(Loc(medicarequote, List(quote, medicare), Medicare Sup. Quote, LocGroup(quote))) List (groupquote,businessquote,lifequote,autoquote,homequote,medicarequote) } I want to control page access so that whenever the user clicks on one of the above menu items and isn't logged they are redirected to the login page. As I understand it, there are no submenus here, only siblings. Where would I put the loggedIn function to make this work? On May 12, 5:02 pm, David Pollak feeder.of.the.be...@gmail.com wrote: If a top-level menu item is not accessible, then none of its children are accessible. SiteMap does not display any pages that are inaccessible. In the example, you've got all the menus controlled by the loggedIn If() clause and that's blocking access to menu and thus the menu is not displayed. On Tue, May 12, 2009 at 4:54 PM, glenn gl...@exmbly.com wrote: I have a menu defined as follows: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote,loggedIn, LocGroup(quote))) More menu items } and an If LocParam to check if the user is logged in: val loggedIn = If(() = User.loggedIn_?, () = RedirectResponse(/login)) When the sitemap is displayed, the menu item is not visible if the user isn't logged in. This is not the behavior expected. The user should be able to click on the menu item and be redirected to the login page. Any ideas as to what's going on here. Am I even using the right mechanism to control page access? Glenn... -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Git some:http://github.com/dpp -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Git some:http://github.com/dpp -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Git some: http://github.com/dpp --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Menu access control not working as expected
Thanks for the heads-up on the 1.1-SNAPSHOT version, but now, when I compile, I get errors. I don't think this has anything to do with menu redirection, but, I have a Company class defined like so: class Company extends LongKeyedMapper[Company] with Address[Company] with IdPK with CRUDify[Long,Company] { ... } And, this is what my compiler output tells me: illegal inheritance; self-type com.exmbly.scala.apbul.model.Company does not conform to net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company]'s selftype net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company] with com.exmbly.scala.apbul.model.Company with net.liftweb.mapper.KeyedMetaMapper [Long,com.exmbly.scala.apbul.model.Company] Was something changed in the definition of Crudify? What do I need to change in my code? The error is a bit confusing. Glenn... On May 13, 2:58 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 2:19 PM, glenn gl...@exmbly.com wrote: David, Pardon my ignorance, but I see a Test case class in the Lift 1.0 api for Loc, but not TestAccess, which seems similar. I added TestAccess to 1.1-SNAPSHOT last night. It's possible to write something in 1.0, but it's a lot harder... basically, you have to write a Snippet and do a custom LocParam. Most of us are on 1.1-SNAPSHOT and the sites I deploy are on 1.1-SNAPSHOT and there hasn't been an instability due to working on trunk-head that I've seen. Glenn... On May 13, 6:58 am, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, I've added another Loc param: /** * Allows extra access testing for a given menu location such that * you can build a menu that is displayed but redirects the user to a login * page if they are not logged in */ case class TestAccess(func: () = Box[LiftResponse]) extends LocParam This will let you write a function that tests access for the page and return a RedirectResponse if the user needs to log in. It will not impact the display of the menu item. Hope this helps. Thanks, David On Tue, May 12, 2009 at 5:23 PM, glenn gl...@exmbly.com wrote: Hmm, Here's my complete menu list for this LocGroup: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote, LocGroup(quote), loggedIn )) val businessquote = Menu(Loc(businessquote, List(quote, business), Commercial Quote, LocGroup(quote))) val lifequote = Menu(Loc(lifequote, List(quote, life), Life Ins. Quote, LocGroup(quote))) val autoquote = Menu(Loc(autoquote, List(quote, auto), Auto Quote, LocGroup(quote))) val homequote = Menu(Loc(homequote, List(quote, home), Homeowners Quote, LocGroup(quote))) val medicarequote = Menu(Loc(medicarequote, List(quote, medicare), Medicare Sup. Quote, LocGroup(quote))) List (groupquote,businessquote,lifequote,autoquote,homequote,medicarequote) } I want to control page access so that whenever the user clicks on one of the above menu items and isn't logged they are redirected to the login page. As I understand it, there are no submenus here, only siblings. Where would I put the loggedIn function to make this work? On May 12, 5:02 pm, David Pollak feeder.of.the.be...@gmail.com wrote: If a top-level menu item is not accessible, then none of its children are accessible. SiteMap does not display any pages that are inaccessible. In the example, you've got all the menus controlled by the loggedIn If() clause and that's blocking access to menu and thus the menu is not displayed. On Tue, May 12, 2009 at 4:54 PM, glenn gl...@exmbly.com wrote: I have a menu defined as follows: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote,loggedIn, LocGroup(quote))) More menu items } and an If LocParam to check if the user is logged in: val loggedIn = If(() = User.loggedIn_?, () = RedirectResponse(/login)) When the sitemap is displayed, the menu item is not visible if the user isn't logged in. This is not the behavior expected. The user should be able to click on the menu item and be redirected to the login page. Any ideas as to what's going on here. Am I even using the right mechanism to control page access? Glenn... -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Git some:http://github.com/dpp -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Git some:http://github.com/dpp -- Lift, the simply
[Lift] Re: Menu access control not working as expected
On Wed, May 13, 2009 at 3:30 PM, glenn gl...@exmbly.com wrote: Thanks for the heads-up on the 1.1-SNAPSHOT version, but now, when I compile, I get errors. I don't think this has anything to do with menu redirection, but, I have a Company class defined like so: CRUDify should be mixed into the Meta object not into th instance class. In this case, move CRUDify to object Company. This was the original intent with CRUDify, but I did not put the proper constraints on it in 1.0... I fixed that up in 1.1. class Company extends LongKeyedMapper[Company] with Address[Company] with IdPK with CRUDify[Long,Company] { ... } And, this is what my compiler output tells me: illegal inheritance; self-type com.exmbly.scala.apbul.model.Company does not conform to net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company]'s selftype net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company] with com.exmbly.scala.apbul.model.Company with net.liftweb.mapper.KeyedMetaMapper [Long,com.exmbly.scala.apbul.model.Company] Was something changed in the definition of Crudify? What do I need to change in my code? The error is a bit confusing. Glenn... On May 13, 2:58 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 2:19 PM, glenn gl...@exmbly.com wrote: David, Pardon my ignorance, but I see a Test case class in the Lift 1.0 api for Loc, but not TestAccess, which seems similar. I added TestAccess to 1.1-SNAPSHOT last night. It's possible to write something in 1.0, but it's a lot harder... basically, you have to write a Snippet and do a custom LocParam. Most of us are on 1.1-SNAPSHOT and the sites I deploy are on 1.1-SNAPSHOT and there hasn't been an instability due to working on trunk-head that I've seen. Glenn... On May 13, 6:58 am, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, I've added another Loc param: /** * Allows extra access testing for a given menu location such that * you can build a menu that is displayed but redirects the user to a login * page if they are not logged in */ case class TestAccess(func: () = Box[LiftResponse]) extends LocParam This will let you write a function that tests access for the page and return a RedirectResponse if the user needs to log in. It will not impact the display of the menu item. Hope this helps. Thanks, David On Tue, May 12, 2009 at 5:23 PM, glenn gl...@exmbly.com wrote: Hmm, Here's my complete menu list for this LocGroup: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote, LocGroup(quote), loggedIn )) val businessquote = Menu(Loc(businessquote, List(quote, business), Commercial Quote, LocGroup(quote))) val lifequote = Menu(Loc(lifequote, List(quote, life), Life Ins. Quote, LocGroup(quote))) val autoquote = Menu(Loc(autoquote, List(quote, auto), Auto Quote, LocGroup(quote))) val homequote = Menu(Loc(homequote, List(quote, home), Homeowners Quote, LocGroup(quote))) val medicarequote = Menu(Loc(medicarequote, List(quote, medicare), Medicare Sup. Quote, LocGroup(quote))) List (groupquote,businessquote,lifequote,autoquote,homequote,medicarequote) } I want to control page access so that whenever the user clicks on one of the above menu items and isn't logged they are redirected to the login page. As I understand it, there are no submenus here, only siblings. Where would I put the loggedIn function to make this work? On May 12, 5:02 pm, David Pollak feeder.of.the.be...@gmail.com wrote: If a top-level menu item is not accessible, then none of its children are accessible. SiteMap does not display any pages that are inaccessible. In the example, you've got all the menus controlled by the loggedIn If() clause and that's blocking access to menu and thus the menu is not displayed. On Tue, May 12, 2009 at 4:54 PM, glenn gl...@exmbly.com wrote: I have a menu defined as follows: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote,loggedIn, LocGroup(quote))) More menu items } and an If LocParam to check if the user is logged in: val loggedIn = If(() = User.loggedIn_?, () = RedirectResponse(/login)) When the sitemap is displayed, the menu item is not visible if the user isn't logged in. This is not the behavior expected. The user should be able to click on the menu item and be redirected to the login page. Any ideas as to what's going on here. Am I even using the right mechanism to control page
[Lift] Re: Menu access control not working as expected
David, Moving CRUDify to the object fixed the compiler error. However, back on the original menu issue, using TestAccess, as you suggest, still did not work as expected. The menu item doesn't display. Maybe I'm missing something important. Sorry to be a bother, but hope you can help. Here's my menu code: def logged:Box[LiftResponse] = if(User.loggedIn_?){ Full(RedirectResponse(/Login)) }else{ Full(PlainTextResponse(No such location)) } val testLogin = TestAccess(() = logged) override def deleteMenuLoc = Empty override def createMenuLoc: Box[Menu] = Full(Menu(Loc(Create +Prefix, createPath, Continue..., locSnippets, LocGroup(company), testLogin, Loc.Template(createTemplate On May 13, 4:03 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 3:30 PM, glenn gl...@exmbly.com wrote: Thanks for the heads-up on the 1.1-SNAPSHOT version, but now, when I compile, I get errors. I don't think this has anything to do with menu redirection, but, I have a Company class defined like so: CRUDify should be mixed into the Meta object not into th instance class. In this case, move CRUDify to object Company. This was the original intent with CRUDify, but I did not put the proper constraints on it in 1.0... I fixed that up in 1.1. class Company extends LongKeyedMapper[Company] with Address[Company] with IdPK with CRUDify[Long,Company] { ... } And, this is what my compiler output tells me: illegal inheritance; self-type com.exmbly.scala.apbul.model.Company does not conform to net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company]'s selftype net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company] with com.exmbly.scala.apbul.model.Company with net.liftweb.mapper.KeyedMetaMapper [Long,com.exmbly.scala.apbul.model.Company] Was something changed in the definition of Crudify? What do I need to change in my code? The error is a bit confusing. Glenn... On May 13, 2:58 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 2:19 PM, glenn gl...@exmbly.com wrote: David, Pardon my ignorance, but I see a Test case class in the Lift 1.0 api for Loc, but not TestAccess, which seems similar. I added TestAccess to 1.1-SNAPSHOT last night. It's possible to write something in 1.0, but it's a lot harder... basically, you have to write a Snippet and do a custom LocParam. Most of us are on 1.1-SNAPSHOT and the sites I deploy are on 1.1-SNAPSHOT and there hasn't been an instability due to working on trunk-head that I've seen. Glenn... On May 13, 6:58 am, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, I've added another Loc param: /** * Allows extra access testing for a given menu location such that * you can build a menu that is displayed but redirects the user to a login * page if they are not logged in */ case class TestAccess(func: () = Box[LiftResponse]) extends LocParam This will let you write a function that tests access for the page and return a RedirectResponse if the user needs to log in. It will not impact the display of the menu item. Hope this helps. Thanks, David On Tue, May 12, 2009 at 5:23 PM, glenn gl...@exmbly.com wrote: Hmm, Here's my complete menu list for this LocGroup: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote, LocGroup(quote), loggedIn )) val businessquote = Menu(Loc(businessquote, List(quote, business), Commercial Quote, LocGroup(quote))) val lifequote = Menu(Loc(lifequote, List(quote, life), Life Ins. Quote, LocGroup(quote))) val autoquote = Menu(Loc(autoquote, List(quote, auto), Auto Quote, LocGroup(quote))) val homequote = Menu(Loc(homequote, List(quote, home), Homeowners Quote, LocGroup(quote))) val medicarequote = Menu(Loc(medicarequote, List(quote, medicare), Medicare Sup. Quote, LocGroup(quote))) List (groupquote,businessquote,lifequote,autoquote,homequote,medicarequote) } I want to control page access so that whenever the user clicks on one of the above menu items and isn't logged they are redirected to the login page. As I understand it, there are no submenus here, only siblings. Where would I put the loggedIn function to make this work? On May 12, 5:02 pm, David Pollak feeder.of.the.be...@gmail.com wrote: If a top-level menu item is not accessible, then none of its children are accessible. SiteMap does not display any pages that are inaccessible. In the example, you've got all the menus controlled by the loggedIn If()
[Lift] Re: Menu access control not working as expected
Glenn, Sorry... there was a bug in the code. I've fixed it. It'll be available when this build finishes: http://hudson.scala-tools.org/job/Lift/949/console Please remember to do an mvn -U clean install I'm enclosing the sample app that I used to test. Please note that you should only return Full(LiftResponse) if you want to redirect... not if you want to stay on the page. Thanks, David On Wed, May 13, 2009 at 8:51 PM, glenn gl...@exmbly.com wrote: David, Moving CRUDify to the object fixed the compiler error. However, back on the original menu issue, using TestAccess, as you suggest, still did not work as expected. The menu item doesn't display. Maybe I'm missing something important. Sorry to be a bother, but hope you can help. Here's my menu code: def logged:Box[LiftResponse] = if(User.loggedIn_?){ Full(RedirectResponse(/Login)) }else{ Full(PlainTextResponse(No such location)) } val testLogin = TestAccess(() = logged) override def deleteMenuLoc = Empty override def createMenuLoc: Box[Menu] = Full(Menu(Loc(Create +Prefix, createPath, Continue..., locSnippets, LocGroup(company), testLogin, Loc.Template(createTemplate On May 13, 4:03 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 3:30 PM, glenn gl...@exmbly.com wrote: Thanks for the heads-up on the 1.1-SNAPSHOT version, but now, when I compile, I get errors. I don't think this has anything to do with menu redirection, but, I have a Company class defined like so: CRUDify should be mixed into the Meta object not into th instance class. In this case, move CRUDify to object Company. This was the original intent with CRUDify, but I did not put the proper constraints on it in 1.0... I fixed that up in 1.1. class Company extends LongKeyedMapper[Company] with Address[Company] with IdPK with CRUDify[Long,Company] { ... } And, this is what my compiler output tells me: illegal inheritance; self-type com.exmbly.scala.apbul.model.Company does not conform to net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company]'s selftype net.liftweb.mapper.CRUDify [Long,com.exmbly.scala.apbul.model.Company] with com.exmbly.scala.apbul.model.Company with net.liftweb.mapper.KeyedMetaMapper [Long,com.exmbly.scala.apbul.model.Company] Was something changed in the definition of Crudify? What do I need to change in my code? The error is a bit confusing. Glenn... On May 13, 2:58 pm, David Pollak feeder.of.the.be...@gmail.com wrote: On Wed, May 13, 2009 at 2:19 PM, glenn gl...@exmbly.com wrote: David, Pardon my ignorance, but I see a Test case class in the Lift 1.0 api for Loc, but not TestAccess, which seems similar. I added TestAccess to 1.1-SNAPSHOT last night. It's possible to write something in 1.0, but it's a lot harder... basically, you have to write a Snippet and do a custom LocParam. Most of us are on 1.1-SNAPSHOT and the sites I deploy are on 1.1-SNAPSHOT and there hasn't been an instability due to working on trunk-head that I've seen. Glenn... On May 13, 6:58 am, David Pollak feeder.of.the.be...@gmail.com wrote: Glenn, I've added another Loc param: /** * Allows extra access testing for a given menu location such that * you can build a menu that is displayed but redirects the user to a login * page if they are not logged in */ case class TestAccess(func: () = Box[LiftResponse]) extends LocParam This will let you write a function that tests access for the page and return a RedirectResponse if the user needs to log in. It will not impact the display of the menu item. Hope this helps. Thanks, David On Tue, May 12, 2009 at 5:23 PM, glenn gl...@exmbly.com wrote: Hmm, Here's my complete menu list for this LocGroup: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote, LocGroup(quote), loggedIn )) val businessquote = Menu(Loc(businessquote, List(quote, business), Commercial Quote, LocGroup(quote))) val lifequote = Menu(Loc(lifequote, List(quote, life), Life Ins. Quote, LocGroup(quote))) val autoquote = Menu(Loc(autoquote, List(quote, auto), Auto Quote, LocGroup(quote))) val homequote = Menu(Loc(homequote, List(quote, home), Homeowners Quote, LocGroup(quote))) val medicarequote = Menu(Loc(medicarequote, List(quote, medicare), Medicare Sup. Quote, LocGroup(quote))) List (groupquote,businessquote,lifequote,autoquote,homequote,medicarequote) } I want to control page access so that whenever
[Lift] Re: Menu access control not working as expected
If a top-level menu item is not accessible, then none of its children are accessible. SiteMap does not display any pages that are inaccessible. In the example, you've got all the menus controlled by the loggedIn If() clause and that's blocking access to menu and thus the menu is not displayed. On Tue, May 12, 2009 at 4:54 PM, glenn gl...@exmbly.com wrote: I have a menu defined as follows: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote,loggedIn, LocGroup(quote))) More menu items } and an If LocParam to check if the user is logged in: val loggedIn = If(() = User.loggedIn_?, () = RedirectResponse(/login)) When the sitemap is displayed, the menu item is not visible if the user isn't logged in. This is not the behavior expected. The user should be able to click on the menu item and be redirected to the login page. Any ideas as to what's going on here. Am I even using the right mechanism to control page access? Glenn... -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Git some: http://github.com/dpp --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---
[Lift] Re: Menu access control not working as expected
Hmm, Here's my complete menu list for this LocGroup: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote, LocGroup(quote), loggedIn )) val businessquote = Menu(Loc(businessquote, List(quote, business), Commercial Quote, LocGroup(quote))) val lifequote = Menu(Loc(lifequote, List(quote, life), Life Ins. Quote, LocGroup(quote))) val autoquote = Menu(Loc(autoquote, List(quote, auto), Auto Quote, LocGroup(quote))) val homequote = Menu(Loc(homequote, List(quote, home), Homeowners Quote, LocGroup(quote))) val medicarequote = Menu(Loc(medicarequote, List(quote, medicare), Medicare Sup. Quote, LocGroup(quote))) List (groupquote,businessquote,lifequote,autoquote,homequote,medicarequote) } I want to control page access so that whenever the user clicks on one of the above menu items and isn't logged they are redirected to the login page. As I understand it, there are no submenus here, only siblings. Where would I put the loggedIn function to make this work? On May 12, 5:02 pm, David Pollak feeder.of.the.be...@gmail.com wrote: If a top-level menu item is not accessible, then none of its children are accessible. SiteMap does not display any pages that are inaccessible. In the example, you've got all the menus controlled by the loggedIn If() clause and that's blocking access to menu and thus the menu is not displayed. On Tue, May 12, 2009 at 4:54 PM, glenn gl...@exmbly.com wrote: I have a menu defined as follows: def quoteMenu:List[Menu] = { val groupquote = Menu(Loc(groupquote, List(quote, group), Group Quote,loggedIn, LocGroup(quote))) More menu items } and an If LocParam to check if the user is logged in: val loggedIn = If(() = User.loggedIn_?, () = RedirectResponse(/login)) When the sitemap is displayed, the menu item is not visible if the user isn't logged in. This is not the behavior expected. The user should be able to click on the menu item and be redirected to the login page. Any ideas as to what's going on here. Am I even using the right mechanism to control page access? Glenn... -- Lift, the simply functional web frameworkhttp://liftweb.net Beginning Scalahttp://www.apress.com/book/view/1430219890 Follow me:http://twitter.com/dpp Git some:http://github.com/dpp --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Lift group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~--~~~~--~~--~--~---