#pragma page-filename DEV/versions/11960537 == Require user authentication in Core - and implement ACL in there == {{{#!table '''Pro ''' || '''Con <
> ''' == Very secure interface<
> || Lot's of work in the Core UI to be done<
> == REST-API could be extended to remote clients<
> (not Localhost only)<
> || you would need to authenticate to the Core<
> == || difficult to know for WebUI what it is allowed to show<
> }}} == Pass Optional User Levels with each item you get via REST (by wacky, benste) == {{{#!table '''Pro ''' || '''Con <
> ''' == each UI could access these Level directly while working with an item<
> || Messing up the item <
> == ACLs are treated optional - e.g. plugins could enable additional feautres || Lack of security once you've got Web Plugins<
> == very easy to show and hide items in the WebUI based on ACL<
> || this only applys for list style values, not for actions<
> == || complete rewrite of REST needed<
> == || user-levels could be treated in DOC<
> == || Do we already have other than the mailman-web Django Project who access REST ?<
> }}} == Use another Middleware (by barry) == Reasons for running REST-API as root@localhost: * keeps the REST API simple * keeps the Data Model simple * clients have unlimmited functional flexibility * not locked into the core's perception of permissions and security<
> VS: requiring every client to implement security, access and permissions It could do the permission check, filter the request as<
> appropriate, and forward it to the core. Of course, responses could also be<
> filtered if necessary, but this would present exactly the API that clients<
> required. It's also supposed to do Authentification {{{#!table '''Pro <
> ''' || '''Con ''' == not messing up REST neither CORE <
> || cloning REST-Api with additional informations (if there is no possibility to check method calls e.g as a list)<
> == pluggability and customization for<
> various environments <
> || need to write a site plugin to use another authentification framework == || }}} == Implement it in the WebUI only == {{{#!table '''Pro ''' || '''Con <
> ''' == No need to change Core<
> || every UI would need to it again - e.g taking a look at the documentation<
> Very big workload for every UI<
> == || == || }}}