Very interesting! Looking forward to seeing the final product.

Sean

Paul Hoehne wrote:
> Thanks, Sean:
>
> It looks like this works.  I'll push the rest of the extension into  
> our public SVN when I get it ironed out.
>
>
>    def activate
>      admin.tabs.add "Rbac Base", "/admin/rbac", :after =>  
> "Layouts", :visibility => [:admin]
>      User.send :has_and_belongs_to_many, :roles
>      User.send :include, RbacSupport
>    end
>
>
> module RbacSupport
>
>    all_roles = Role.find(:all)
>
>    all_roles.each do | possible_role |
>      define_method("#{possible_role.role_name.underscore}?") do
>        if @my_roles == nil
>          @my_roles = Hash.new
>          roles.each do | role |
>            @my_roles["#{role.role_name.underscore}"] = true
>          end
>        end
>        @my_roles["#{possible_role.role_name.underscore}"] || admin?
>      end
>    end
> end
>
>
> On Aug 21, 2007, at 9:51 AM, Sean Cribbs wrote:
>
>   
>> Paul,
>>
>> It should be easy to add a new role(s) for this if you have only
>> role-specific permissions and nothing more granular than that.  Just
>> create an extension that modifies the User model (in the database  
>> and in
>> the code), providing methods in the manner of "finance?" or
>> "public_relations?" that test whether a given user has that role.   
>> Then
>> your other interfaces/extensions can add restrictions on those tabs  
>> easily.
>>
>> Sean
>>
>> Paul Hoehne wrote:
>>     
>>> A question of philosophy
>>>
>>> Currently, we're looking at extending radiant for a client whose
>>> primary need is content.  However, they also need some other tools
>>> specific to not-for-profits.  Ideally it would be great to deliver
>>> everything in one interface.  (Content management and applications).
>>> The applications would live inside the admin interface for radiant,
>>> utilizing Radiant's login and user-management system.  Where we've
>>> started is with an extension to manage roles and users assigned to
>>> those roles.  What we're trying to extend now is the process of
>>> displaying tabs for users.  For example, only people in the "finance"
>>> role should see the tab in the admin interface for finance related
>>> reports, receipts from web donations, etc.
>>>
>>> For example, the following code from admin_ui.rb appears to be
>>> responsible for making the decision to display tabs for users.  It
>>> would be nice to extend the user to read all the available roles in
>>> our roles table to provide "#{role}?" methods for the available  
>>> roles.
>>>
>>> def shown_for?(user)
>>>      visibility.include?(:all) or visibility.any? { |role| user.send
>>> ("#{role}?") }
>>> end
>>>
>>> As we look through the code it might not be possible to do everything
>>> we would like from extensions.  Would there be interest in the
>>> community in re-visiting the user roles to provide for a more
>>> flexible roles system?
>>>
>>> Paul
>>>
>>>
>>>
>>> _______________________________________________
>>> Radiant mailing list
>>> Post:   [email protected]
>>> Search: http://radiantcms.org/mailing-list/search/
>>> Site:   http://lists.radiantcms.org/mailman/listinfo/radiant
>>>
>>>
>>>       
>> _______________________________________________
>> Radiant mailing list
>> Post:   [email protected]
>> Search: http://radiantcms.org/mailing-list/search/
>> Site:   http://lists.radiantcms.org/mailman/listinfo/radiant
>>     
>
> _______________________________________________
> Radiant mailing list
> Post:   [email protected]
> Search: http://radiantcms.org/mailing-list/search/
> Site:   http://lists.radiantcms.org/mailman/listinfo/radiant
>
>   

_______________________________________________
Radiant mailing list
Post:   [email protected]
Search: http://radiantcms.org/mailing-list/search/
Site:   http://lists.radiantcms.org/mailman/listinfo/radiant

Reply via email to