Configuring for multi-client use
If you are interested in setting up ResourceSpace as an environment where you may have multiple users whose resources should remain private from each other, here is one method of doing so. This would suit a scenario such as if you are a designer who manages multiple clients resources, yet need them to remain exclusive from each other.
It is possible to set up restricted access using the standard permissions (i.e. the 'custom' access level when editing resources) to allocate resources manually to groups, but the method outlined below applies the ownership through metadata, which then gives you the power to search through resources using this field, targeting a specific client's material if necessary.
Customise your resource types/fields
- In the 'Resource types / fields' create a new global field called 'client' so this can be attached to all types of resources.
- Under 'field type' select 'Drop down list', and add field options (e.g. 'company1,company2,company3').
- Under 'Index this field' select Yes.
- Enter "client" (without the quotes) in the 'Shorthand Name' field as you will reference it in the next step.
You will need to update any resources that belong to your client using this newly created field. When you edit a resource, you will now have the choice of selecting which client it belongs to.
- Note: Instead of making the client field a dropdown, you could alternatively make it a check box list, then you could share the same resource among multiple clients by ticking more than one box.
Customise your user groups
- For each client you have, create a new user group and name it something like: 'Client User - Company1'.
- Create a new search filter and add a rule in which the client field must be set to 'client1'. Set the usergroup to use this search filter. This will filter all results from your clients search so that only resources that are tagged with their company name in the client field will be shown to them.
- Enter in the 'resource defaults' field your short field name from the first step, followed by an equals sign, then your company name from the options list as a value pair eg 'client=company1'. This will set the field client to be 'company1' for all uploads by that particular client.
- Set the permissions for this group (see below).
Permissions
Now that you have created a custom 'client' field for each resource, you must also tailor the permissions so this field is not accessible to them, as you (most likely) do not want them to see your client list, or to be able to change the ownership of the resource. Here follows an example of the permissions you may wish to assign to your new user profile:
Specifying the 'Can see field...' permissions (rather than using 'Can see all fields') will mean this user group is only shown the fields you want, and you can exclude the new 'client' field you have created. Please note: the specific 'Can see field...' numbers you require may be different for your version of ResourceSpace. Please be sure to check which fields you need.
Set the resource creation permission of each client user group to 'normal users; resources go to 'Pending Submission' state via My Contributions', rather than 'admin users; resources go to 'Active' state' so that you can assign the resource to the client, rather than them doing it themselves
'Can manage users in children groups to the user's group only', 'Can only message and share resources with other users in child, parent and own groups' - These last two permissions are also important as they are restrictive group permissions that mean clients can only email users within their group, and assign users within their group
Configuration options
You should ensure that your system configuration options are set to be suitable for multi-client environment. Some options to consider disabling or setting per group are listed below:-
// The geographic search heatmap displays all resource // locations $geo_search_heatmap = false; // Comments from all users are displayed when enabled $comments_resource_enable = false;
Create your users
- For each client user account, you will need to create at least one new user and attach them to the relevant user group you created in the previous step. This way you can still have more than one user for each company.
Now when your client logs in and does an empty search, instead of seeing all resources in the system, they will only see ones that are tagged as belonging to them.
Don't forget to go back and update your resources using the new 'client' field with the appropriate values.
Suggested workflow: After you are finished setting things up properly as outlined above, you may need to update existing resources in your client's database with the proper client tag. To ensure that all resources currently in the client database are carried over, log into a demo/test client account, perform an empty search (returns all resources), then click the 'Add search items to collection' option to add to a new collection. Temporarily disable the E and U permissions for your client account, then edit the Collection, adding yourself (assuming you are an administrator) to the 'attached users'. You may then log back in as an admin and will find the previously created Collection complete in your account. To perform a batch tag update for the Collection, click the 'Edit all' option in the Collection. The 'Client' tag field should now be accessible for batch editing. Don't forget to put the E and U permissions back into your client account when finished.
Further customisation
Client groups: You can use the 'parent' field on the groups to allow one group to manage the users in another. You could have two groups per client, one admin and one general, and the admin users can manage the general users. So you could let your client manage their own logins. The admin group needs the 'U' permission.