Metadata-Version: 2.1
Name: ckanext-drupal-idp
Version: 0.2.0
Summary: Login to CKAN using Drupal session cookie
Home-page: https://github.com/DataShades/ckanext-drupal-idp
Author: Motornyuk Sergey
Author-email: sergey.motornyuk@linkdigital.com.au
License: AGPL
Keywords: CKAN
Platform: UNKNOWN
Description-Content-Type: text/markdown
Provides-Extra: mysql
License-File: LICENSE

[![Tests](https://github.com/DataShades/ckanext-drupal-idp/workflows/Tests/badge.svg?branch=main)](https://github.com/DataShades/ckanext-drupal-idp/actions)

# ckanext-drupal-idp

When Drupal's session cookie is available use it for user authentication. Create missing users, using data from Drupal's DB and synchronize(conditionally) fields when user details changed on Drupal's side.


## Requirements

* python >= 3.6
* CKAN >= 2.9


## Installation

To install ckanext-drupal-idp:

1. Activate your CKAN virtual environment, for example:

		. /usr/lib/ckan/default/bin/activate

2. Clone the source and install it on the virtualenv

		git clone https://github.com/DataShades/ckanext-drupal-idp.git
		cd ckanext-drupal-idp
		pip install -e .

3. Add `drupal-idp` to the `ckan.plugins` setting in your CKAN
   config file (by default the config file is located at
   `/etc/ckan/default/ckan.ini`).

4. Configure Drupal's DB:

		ckanext.drupal_idp.db_url = <URL>

4. Restart CKAN. For example if you've deployed CKAN with Apache on Ubuntu:

		sudo service apache2 reload


## Config settings

	# ckanext-drupal-idp
	# Defines database used by the Drupal application
	# (mandatory).
	ckanext.drupal_idp.db_url = mysql://drupal_user:drupal_pass@127.0.0.1:3306/db_name

	# Whether to make an attempt to synchronize user's details everytime
	# session is used. This may result in unauthenticated session if new name or email
	# already present in CKAN database
	# (optional, default: false).
	ckanext.drupal_idp.synchronization.enabled = true

	# Configure hostname of the drupal instance statically. Usefull for local testing with
	# manually added cookie from any accessible drupal instance
	# (optional)
	ckanext.drupal_idp.host = my.site.com

	# Whether to set sysadmin flag on the user who has Drupal's admin role
	# (optional, default: false)
	ckanext.drupal_idp.admin_role.inherit = true

	# Name of the role that grants sysadmin status
	# (optional, default: administrator)
	ckanext.drupal_idp.admin_role.name = administrator

	# When user created, set his ID to the same value as DrupalID
	# (optional, default: false)
	ckanext.drupal_idp.same_id = true

## API actions

#### `drupal_idp_user_show`

##### Parameters:

    id: (mandatory) DrupalID of the user

##### Details:

Accepts mandatory `id`(DrupalID). The rest of parameters will be
passed to underlying `user_show`.

---

## Auth functions

#### `drupal_idp_user_show`

##### Details:

Checks whether user is allowed to get user details by DrupalID. At the
moment only sysadmin can pass this check.

---

## CLI

    * drupal-idp - ckanext-drupal-idp CLI
      * user - User management
        * list - List all users with DrupalID

---

## Developer installation

To install ckanext-drupal-idp for development, activate your CKAN virtualenv and
do:

    git clone https://github.com/DataShades/ckanext-drupal-idp.git
    cd ckanext-drupal-idp
    python setup.py develop
    pip install -r dev-requirements.txt


## Tests

To run the tests, do:

    pytest --ckan-ini=test.ini ckanext/drupal_idp


