# User Group Source Plugins

# About

User Group Source plugins allow you to add roles to a user when the user logs in.

# Use

Create a user group source plugin and install it like other Rundeck plugins. When a user logs in, your plugin will be called with the user's username and will add any roles you have designated to the user.

# Configuring

To configure your plugin you can add configuration values to the framework scope.

Framework scope property definition in framework.properties

framework.plugin.UserGroupSource.[your_plugin_name].[property]=value

Please note you cannot configure this plugin at a project level because it executes before any project information is applicable.

# Java Plugin Type

package example;

import com.dtolabs.rundeck.core.plugins.Plugin;
import com.dtolabs.rundeck.plugins.ServiceNameConstants;
import com.dtolabs.rundeck.plugins.user.groups.UserGroupSourcePlugin;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Plugin(name = "example-user-group-source-plugin",service= ServiceNameConstants.UserGroupSource)
public class ExampleUserGroupSourcePlugin implements UserGroupSourcePlugin {
    List<String> groups = new ArrayList<>();

    public ExampleUserGroupSourcePlugin() {
        groups.add("RUNDECK_USER"); //This group would get added to all users
    }

    @Override
    public List<String> getGroups(final String username, final Map<String, Object> config) {
        //Check username and add groups from your datasource
        if(username.equals("bob")) {
            groups.add("PROJECT_MANAGER");
        } else if(username.equals("alice")) {
            groups.add("ENGINEERING");
        }
        return groups;
    }
}

# Script Plugin Type

Roles will be picked up from the script between the markers ==START_GROUPS== and ==END_GROUPS==. Echo one role name per line.

#!/usr/bin/env bash

echo "==START_GROUPS=="
echo "role1"
echo "role2"
echo "==END_GROUPS=="