Hi Bryan,
    Thanks for the advice, I spotted the admin subsite stuff but haven't got
around to trying it out yet!

Cheers,
Patrick

On Fri, Nov 20, 2009 at 3:28 PM, Bryan Larsen <[email protected]>wrote:

> I know there's been a discussion about this somewhere, but I can't
> remember where.  Perhaps some of the older members of the group can
> speak up.
>
> The hobo permission system has attribute granularity, not model
> granularity.  So you can limit access to every attribute in the model,
> but not to the model itself.
>
> A couple of things will help, though:
>
> 1) remove the standard rails default routes from the bottom of your
> config/routes.rb file.  That'll remove a few inadvertant security holes.
>
> 2) Use the hobo admin subsite capability and move the ip address pages
> into the admin controller.  Documentation for which appears a couple of
> days ago:  http://cookbook.hobocentral.net/tutorials/subsite
>
> An alternative to my #2 and your #2 is to wrap the IpAddress index.dryml
> etc in something like
>
> <if test="&current_user.administrator?">
>    <index-page>
>      ....
>   </index-page>
> </if>
> <else>
>   Access Denied!
> </else>
>
> Not particularly more elegant than your #2, but an alternative.
>
> Bryan
>
>
> Patrick Fitzgerald wrote:
> > Hi All,
> >
> > I manged to achieve what I wanted to. The way I did it was a mixture of
> > Rails and Hobo.  First up I got hid the nav item from unprivileged users
> > using the Rapid *"if"* tag like so:
> >
> > 1. Redefined the main-nav tag in application.dryml:
> >
> > <def tag="main-nav">
> > <navigation class="main-nav" merge-attrs param="default">
> > <nav-item href="#{base_url}/">Home</nav-item>
> > <if test="&current_user.administrator?" >
> > <nav-item with="&IpAddress">IP Addresses</nav-item>
> > </if>
> >                 <nav-item with="&Machine">Machines</nav-item>
> > </navigation>
> > </def>
> >
> > This line will ensure only admin users can see the tab:
> > <if test="&current_user.administrator?" >
> >
> > That's all well and good but if someone knows or guesses the URL then
> > they can still gain read access to the data which isn't very secure.
> >  For example: http://127.0.0.1:3000/ip_addresses would still show all of
> > the IP Addresses.
> >
> > In order to get around that I created a before filter which I placed at
> > the head of the IP Address controller.  This code checks the user level
> > and redirects if someone is trying to be somewhere they shouldn't be.
> >
> > 2.  The code for the IP Address controller:
> >
> > class IpAddressesController < ApplicationController
> > * **before_filter** **:check_user_level*
> > *
> > *
> > * **def check_user_level*
> > * **puts "\n\n\n!!!AUTHORIZING!!!\n\n\n"*
> > * **puts "Is admin user?: #{current_user.administrator?}\n\n\n"*
> > *    *
> > *                # If the user doesn't have the required access send
> > them on their way.*
> > * **if !current_user.administrator?*
> > * **flash[:notice] = "You don't have the required access to be here.  I
> > cast thee out!"*
> > * **redirect_to "/"** *
> > * **end*
> > * **end*
> >
> > hobo_model_controller
> >
> > auto_actions :all
> >
> > end
> >
> > This approach works a treat to solve the problem I described earlier in
> > this thread.  I hope that this helps someone out in solving a similar
> > problem.
> >
> > The downside of this is that it doesn't user the Hobo permissions system
> > at all.  I would really like to know the Hobo way to solve this problem
> > and welcome any comments or suggestions.
> >
> > Cheers,
> > Patrick
> >
> > On Fri, Nov 20, 2009 at 11:35 AM, Patrick Fitzgerald
> > <[email protected] <mailto:[email protected]>> wrote:
> >
> >     Hi Adam/All,
> >        I'll try to give as much information as possible.  I am looking
> >     for the Hobo way to fix this problem.  I have attached an image
> >     which shows what I am trying to do.  Basically I have an ip address
> >     model which I only want the admin to have access to.  That includes
> >     viewing.  I don't want any other user to be even aware of the ip
> >     address model! :)
> >
> >     Here's the relevant code:
> >
> >     1. New index page defined in application.dryml
> >
> >     <def tag="index-page" for="IpAddress">
> >       <page merge title="Ip Addresses">
> >         <body: class="index-page ip-address" param/>
> >
> >         <content: param>
> >           <header param="content-header">
> >             <h2 param="heading">Ip Addresses</h2>
> >
> >             <p param="count" if>There <count prefix="are"/></p>
> >           </header>
> >
> >           <section param="content-body">
> >
> >             <a action="new" to="&model" param="new-link"/>
> >
> >             <page-nav param="top-page-nav"/>
> >
> >     <table-plus fields="this" >
> >     <% puts "What is this: #[email protected]}" %>
> >     </table-plus>
> >
> >     <collection param />
> >             <page-nav param="bottom-page-nav"/>
> >
> >
> >           </section>
> >         </content:>
> >       </page>
> >     </def>
> >
> >     2. IP Address model:
> >
> >     class IpAddress < ActiveRecord::Base
> >
> >     hobo_model # Don't put anything above this
> >
> >     fields do
> >     ip_address :string, :name => true
> >     timestamps
> >     end
> >
> >     belongs_to :machine
> >
> >     # --- Permissions --- #
> >
> >     def create_permitted?
> >     acting_user.administrator?
> >     end
> >
> >     def update_permitted?
> >     acting_user.administrator?
> >     end
> >
> >     def destroy_permitted?
> >     acting_user.administrator?
> >     end
> >
> >     def view_permitted?(field)
> >     acting_user.administrator?
> >     #true
> >     end
> >
> >     end
> >
> >     Everything else is stock Hobo stuff.  If you need anything else form
> >     me let me know.
> >
> >     Thanks,
> >     Patrick
> >
> >
> >
> >     On Thu, Nov 19, 2009 at 11:56 PM, Adam Grant <[email protected]
> >     <mailto:[email protected]>> wrote:
> >
> >         What does your controller/view code look like? Are you using the
> >         hobo methods in your controller/view? Some code pasting would be
> >         great!
> >
> >         --
> >         Adam Grant
> >         Lead Web Engineer
> >         Telaeris, Inc.
> >         [email protected] <mailto:[email protected]>
> >         (858) 627-9710
> >
> >
> >         On Thu, Nov 19, 2009 at 3:43 PM, Patrick Fitzgerald
> >         <[email protected] <mailto:[email protected]>> wrote:
> >
> >             Hi all,
> >                This is probably really simple but...
> >
> >             I want to prevent a user from accessing a tab and anything
> >             at all to do with a model.  I have tried changing the code
> to:
> >
> >             def view_permitted?(field)
> >             acting_user.administrator?
> >             end
> >
> >             which didn't affect a normal user's ability to view the
> >             page.  I've also tried to force it using:
> >
> >             def view_permitted?(field)
> >             false
> >             end
> >
> >             Am I missing something obvious?!
> >
> >             Thanks for all help!
> >
> >             Patrick
> >
> >             --
> >
> >             You received this message because you are subscribed to the
> >             Google Groups "Hobo Users" group.
> >             To post to this group, send email to
> >             [email protected] <mailto:
> [email protected]>.
> >             To unsubscribe from this group, send email to
> >             
> > [email protected]<hobousers%[email protected]>
> >             
> > <mailto:hobousers%[email protected]<hobousers%[email protected]>
> >.
> >             For more options, visit this group at
> >             http://groups.google.com/group/hobousers?hl=.
> >
> >
> >         --
> >
> >         You received this message because you are subscribed to the
> >         Google Groups "Hobo Users" group.
> >         To post to this group, send email to [email protected]
> >         <mailto:[email protected]>.
> >         To unsubscribe from this group, send email to
> >         
> > [email protected]<hobousers%[email protected]>
> >         
> > <mailto:hobousers%[email protected]<hobousers%[email protected]>
> >.
> >         For more options, visit this group at
> >         http://groups.google.com/group/hobousers?hl=.
> >
> >
> >
> > --
> >
> > You received this message because you are subscribed to the Google
> > Groups "Hobo Users" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<hobousers%[email protected]>
> .
> > For more options, visit this group at
> > http://groups.google.com/group/hobousers?hl=.
>
> --
>
> You received this message because you are subscribed to the Google Groups
> "Hobo Users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<hobousers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/hobousers?hl=.
>
>
>

--

You received this message because you are subscribed to the Google Groups "Hobo 
Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/hobousers?hl=.


Reply via email to