[Grok-dev] post 1.0 Grok development wishlist
Sylvain Viollon
sylvain at infrae.com
Mon Nov 2 04:23:02 EST 2009
On Mon, 26 Oct 2009 09:59:59 +0100
Sylvain Viollon <sylvain at infrae.com> wrote:
Hello,
Anybody have any idea about I proposed here ?
Anybody is interested about the topic ?
Best regards,
Sylvain,
> On Tue, 06 Oct 2009 19:25:30 +0200
> Martijn Faassen <faassen at startifact.com> wrote:
>
> > Hi there,
> >
>
> Good morning,
>
> I have been busy, and thinking.
>
> > In the hope of prompting some discussions and development activity,
> > here is a list of post 1.0 Grok wishlist items I have or know about:
> >
> > [...]
> >
> >
> > * megrok.layout integration. Look into integrating megrok.layout
> > functionality into the Grok core. This would require some discussion
> > on megrok.layout to see what shape this integration could best be
> > like.
> >
>
> As I use heavily that package in Silva (since I somehow made it in
> Silva), I would like to work on that as well, as it's a feature I
> already use.
>
> So if there is people interested to brainstorm, I am all open.
>
> If JW and Jan Jaap are interested maybe we can setup some kind of
> local sprint a Friday afternoon at Infrae to talk about it (since we
> are in the same city).
>
> > * z3c.hashedresource and hurry.resource integration. Some work was
> > done at the sprint to explore this.
> >
>
> I use my own cooked things for resources now, based in
> z3c.resourceinclude, but I am not 200% satisfied, I am interested
> to see how things are going here as well.
>
> > * declarative model-level security decorators/directives, for the
> > case where Grok's "view-only" security system isn't enough and
> > security proxies are desired.
> >
>
> That last point is the one which interest me the most. There two
> things I can think of:
>
> - a decorator, which takes a permission and protect that method with
> the given permission. As soon as you specify one decorator in your
> class, all non-specified authorized access are forbidden, i.e. you
> need to declare each method you want to access using a decorator:
>
> class MyContent(grok.Model):
>
> @grok.require('my.permission')
> def doMe(self, bla, blabla):
> pass
>
>
> The decorator could take an instance of grok.Permission as well.
>
> It sounds like in Zope2 with security.declarePrivate calls.
>
> It sounds easy as well, to understand, and write.
>
> But it doesn't sounds complete: I want to be able to protect
> attributes as well, with one permission for view, and one for set.
>
> - so we could create two directives, one for view, one for set (so
> it cover the property usecase). They takes an interface, and a
> permission, and do their jobs. If you don't set a view directive
> but a set, the view fallback to the same permission than the view.
>
>
> class IMyContent(grok.IContext):
>
> lastDone = interface.Attribute()
>
> def doMe(bla, blabla):
> pass
>
>
> class MyContent(grok.Model):
>
> grok.restrict(IMyContent, 'my.changepermission')
> grok.restrictAccess(IMyContent, 'my.viewpermission')
>
> ...
>
>
> It's nice because this does everything I want of (in fact it's
> just a translation of the ZCML configuration in grok directives, it's
> not that original).
>
> But you need to write interfaces to declare your security.
> Interface are always a good thing anyway, but it sound complicated
> for Grok newbies, whenever the first solution sounds more easy to
> understand.
>
> It might be shorter for complex declaration: you don't have to
> repeat 20 times the grok.require with the same permission for a
> class with 20 methods.
>
> I think the best will still be only to implement the second 'idea'
> as if you need to setup content-level security, that means your
> application is complex, and so you are not a newbie anymore, so you
> can understand and write interfaces. But if someone want the first
> one anyway, I think it's doable in a megrok.something extension to
> have it.
>
> In both case, I propose the default security should be 'open' for a
> class. If you specify a security definition on a class, all
> non-declared attributes should be forbidden of access (let say
> 'closed').
>
> For people who want to enforce security everywhere, I think that
> megrok.strictrequire could check that.
>
> Anyway I think everybody will agree that, that code should end up in
> grokcore.security.
>
> Note: all the directives name I propose are just the one who popup
> in my mind when writing that mail. I am sure we can think of something
> better.
>
> If anyone have comments, I would love to have them. Maybe someone
> have a better way/idea to define security.
>
> Best regards,
>
> Sylvain,
>
--
Sylvain Viollon -- Infrae
t +31 10 243 7051 -- http://infrae.com
Hoevestraat 10 3033GC Rotterdam -- The Netherlands
More information about the Grok-dev
mailing list