Giter VIP home page Giter VIP logo

borg.localrole's Introduction

Plone Logo

Plone

PyPI - Wheel PyPI - License PyPI - Status

GitHub contributors GitHub Repo stars

Plone is a mature, secure, and user-friendly content management system (CMS).

Plone was first released to the public on October 4, 2001.

Plone has the maturity, stability, and reliability of an application maintained by open source developers with decades of experience, while continually evolving and adapting to modern technology.

Lots of customizations can be made trough-the-web, such as creating content types, themes, workflows, and much more. Plone may be extended and used as a framework on which to build custom CMS-like solutions.

Plone works as a

  • Full-featured server-side rendered HTML CMS.
  • React-based frontend for editing and viewing content, backed by a server with a REST API.
  • Headless CMS server with a REST API, allowing a developer to build a custom frontend with their chosen technology.

Installing Plone

Plone is available on Linux, Microsoft Windows, macOS, and BSD platforms.

Plone may be run as a container in the cloud with Docker and other Open Containers Initiative compliant platforms. Example Dockerfiles and base images are available.

Install Plone by choosing an option from plone.org

Documentation

Consult the official Plone documentation with information for different audiences.

For trainings comprehensive Plone training material is available.

What is Plone?

Plone is a ready-to-run content management system, offering a complete set of features needed by a wide variety of organizations.

Security is built into Plone's architecture from the ground up. Plone offers fine-grained permission control over content and actions.

Plone is easy to set up, extremely flexible, and provides you with a system for managing web content that is ideal for project groups, communities, websites, extranets, and intranets.

  • Plone is easy to install. Several installation options are available for either your local machine or on servers in the cloud.

  • Plone empowers content editors and web application developers. The Plone Team includes usability experts who have made Plone easy and attractive for content managers to add, update, and maintain content.

  • Plone is international. The Plone interface has more than 35 translations, and tools exist for managing multilingual content.

  • Plone follows standards and is inclusive. Plone carefully follows standards for usability and accessibility. Plone is compliant with WCAG 2.1 level AA and aims for ATAG 2.0 level AA.

  • Plone is open source. Plone is licensed under the GNU General Public License, the same license used by Linux. This gives you the right to use Plone without a license fee, and to improve upon the product.

  • Plone is supported. There are over two hundred active developers in the Plone Development Team around the world, and a multitude of companies that specialize in Plone development and support.

  • Plone is extensible. There is a multitude of add-on products for Plone to add new features and content types. In addition, Plone can be scripted using web standard solutions and open source languages.

  • Plone is technology neutral. Plone can interoperate with most relational database systems—both open source and commercial—and runs on a vast array of platforms, including Linux, Windows, macOS, and BSD.

Technical overview

Plone is a content management platform with its backend written in Python. Plone has a choice of frontend, either Classic UI using server-side templates or Volto written in modern React-based JavaScript. It builds upon Zope, an open source web application server and development system, and thus on the pluggable Zope Component Architecture (ZCA).

Python is the easy to learn, widely used, and supported open source programming language. Python can be used to add new features to Plone and used to understand or make changes to the way that Plone works.

Plone stores its contents in Zope's built-in transactional hierarchical object database, the ZODB. The ZODB can be connected to simple file-storages, scalable ZEO-Servers or Postgres, MySQL, and Oracle. There are add-ons and techniques, however, to share information with other sources, such as relational databases, LDAP, filesystem files, and so on.

Official Resources

  • plone.org - Official website for developers, community, decision makers, and evaluators.
  • Plone support - Where to find help.
  • community.plone.org - Official community forum, the best place to get help.
  • docs.plone.org - Official documentation for developers, integrators, and content editors.
  • training.plone.org - Trainings for developers, integrators, content editors, and designers.
  • plone.api - Documentation for plone.api.
  • plone.restapi - Documentation for plone.restapi.
  • Discord - Official Plone chat, voice, and video service.

This project is supported by

Plone Logo

License

The project is licensed under the GPLv2.

borg.localrole's People

Contributors

ale-rt avatar alecpm avatar davisagli avatar esteele avatar garbas avatar gaudenz avatar gforcada avatar hannosch avatar hvelarde avatar jensens avatar mauritsvanrees avatar optilude avatar pbauer avatar pre-commit-ci[bot] avatar sidnei avatar tomgross avatar wichert avatar witsch avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

borg.localrole's Issues

borg.localrole caching objects using id(object)

Copy of issue by @evilbungle over here: https://dev.plone.org/ticket/9915

Summary: In borg.localrole.workspace.clra_cache_key, when generating the cache key for caching the result of checkLocalRolesAllowed, if the object does not have a getPhysicalPath attribute (such as a browser view), id(obj) is used instead (line 127). This assumes that the id() of that object is unique and constant for the lifetime of a request. This isn't necessarily the case, and it's possible to cause cache collisions using lots of restrictedTraverse calls. Collisions in this case result in the wrong set of local roles being returned.

History: We're seeing the problem because we have a browser view which is only visible in certain contexts - we know that somewhere in the acquisition chain the user will be able to see the view, so we run up through the aq_chain, try restrictedTraverse() and ignore any Unauthorized errors until we find a context where that view is usable. Since the security is tested after the view has been instantiated we're creating lots of instances of the view then immediately throwing them away. For some reason, there's a high chance that new instances of the same object share an id() which was previously used for a different instance (potentially in a different context!). When the local roles are read from the cache, the roles for a different context are returned, producing inconsistent results.

Potential fix: borg.localrole, workspace.py, line 127: change oid = id(obj) to raise DontCache. There's an obvious disadvantage to this, in that it means that local roles on browser views won't get cached.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.