GithubHelp home page GithubHelp logo

dropbox / merou Goto Github PK

View Code? Open in Web Editor NEW
96.0 28.0 43.0 3.04 MB

Permission management service

License: Other

Python 86.61% HTML 12.32% CSS 0.39% JavaScript 0.46% Shell 0.06% Dockerfile 0.15%

merou's Introduction

merou

Build Status Code Style: Black

Deprecation

The Merou/Grouper project has been deprecated. You may continue to use and maintain forks of the project, but the Dropbox team will no longer contribute to this repository.

Description

Merou is an application to allow users to create and manage memberships to their own groups. It requires Python 3.7 or later.

Note: We renamed the project to avoid a namespace conflict, but it isn't reflected in the codebase yet.

Installation

Standard Python package installation instructions apply. You will need Python 3 and development headers for MySQL.

On Debian-based systems:

apt-get install libmysqlclient-dev libpython3-dev libcurl4-openssl-dev libssl-dev python3-pip
pip3 install -e git+https://github.com/dropbox/merou#egg=grouper

Next you need to configure grouper to find a SQL-style backing database and stand up processes to serve the read-write web UI and read-only programmatic API. There's an sample configuration file, suitable for local development and testing, in config/dev.yaml.

Running a Test instance

Grouper runs behind a reverse proxy that handles authentication and so expects a valid, authenticated, user account. I've included a test proxy for running on development instances.

Creating a development instance:

export PYTHONPATH=$(pwd)
export GROUPER_SETTINGS=$(pwd)/config/dev.yaml

# Setup the database.
bin/grouper-ctl sync_db

## You can either run all the various servers and the reverse-proxy
## via a helper script:
tools/run-dev --user $USER@example.com

## Or separately:
# Run the development reverse proxy
bin/grouper-ctl -vv user_proxy $USER@example.com

# Run the frontend server
bin/grouper-fe -vv

# Run the graph/api server
bin/grouper-api -vv

Setting up the first groups and permissions

In order to bootstrap your new Grouper environment, you will want to create a user for yourself and add it to the grouper-administrators group.

export PYTHONPATH=$(pwd)
export GROUPER_SETTINGS=$(pwd)/config/dev.yaml

bin/grouper-ctl -vv\
    user create $USER@example.com

# Give the user administrative access to the Grouper instance
bin/grouper-ctl -vv \
    group add_member --owner grouper-administrators $USER@example.com

Running the tests

Some tests require a recent (>= 2.31) version of chromium-driver, which can be installed via apt or Homebrew:

apt install chromium-driver

(This may be called chromium-chromedriver in older versions.) Once chromium-driver is installed, the tests can be run using pytest:

pip install -r requirements.txt
pip install -r requirements-dev.txt
pytest
flake8
mypy .

If you see test failures and suspect incompatible library versions (e.g., an existing tornado install at a different major release than that in our requirements.txt), then you can try using a virtual environment.

$ virtualenv ~/merou-venv -p /usr/bin/python3
$ source ~/merou-venv/bin/activate
(merou-venv) $ pip install -r requirements.txt
(merou-venv) $ pip install -r requirements-dev.txt
(merou-venv) $ pytest
(merou-venv) $ deactivate
$

All Merou code is formatted with black, which is installed by the requirements-dev.txt requirements file for Python 3. After installation, you can reformat all source code with:

black .

All new code must be formatted with the version of black indicated in requirements-dev.txt in order to pass Travis CI tests.

merou's People

Contributors

acidity avatar akorzo-dbx avatar armooo avatar benjaminp avatar bismuth-taco avatar brandon-rhodes avatar cauthu avatar cbguder avatar cugini-dbx avatar flakkentime avatar gmjosack avatar goodwordalchemy avatar herb avatar jeichenhofer avatar jingw avatar karthik-shanmugam avatar kevinji avatar lfaraone avatar m-ynk avatar mattspitz avatar rickmark avatar rohansharma avatar rra avatar santoshankr avatar tmildorf avatar tomeara-quora avatar wrodriguez-dbx avatar xmycroftx avatar yasaswyk avatar zorkian avatar

Stargazers

 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

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

merou's Issues

Recommended way to push identity from Merou to IdP?

Good day Dropbox crew!

Merou appears to solve some of the issues with identity that we experience within my organization (another tech company of roughly your size). In fact, I learned about it from a former Dropbox employee who had previously used it and is a big fan.

What I'm struggling with a bit is how you harness Merou as the system of record when it comes time to interface with services like AWS, cloud apps, etc. My guess is that you've (privately) built a plugin to capture events and push them to Okta, either via its API or by SCIM, and then you federate from there. That's currently how I'm considering approaching this problem, but if there's some other way that I'm just missing, or simply another practice you'd advocate for, I'd love to be corrected/learn more before I head down that path.

If you'd like to discuss in more detail in a less public setting: https://keybase.io/matthewsullivan

Thank you in advance for your time!

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.