Libraries Permissions validation flows
This document outlines validation flows for permissions and scopes within the Libraries feature. It serves as a working draft to clarify essential permission-based functionalities and user interactions. Changes and refinements may be made as requirements evolve.
View Library A
Enter Studio home.
Enter Libraries section.
If user has
view_librarypermission AND Scope:Library A:Can view Library A in Libraries home.
Can search for Library A.
Can sort the libraries alphabetically and see Library A.
Can select Library A from the list.
Can search for contents and collections.
Can filter contents by:
Component
Collection
Tags
Type of component
Can see individual content and collections.
Can see library information.
Can view content and collection previews
Can view content and collection tags
Can view content and collection metadata
Else:
Cannot see, search for, or sort Library A in Libraries home.
Create Library A
Enter Studio home.
Enter Libraries section.
If user has
create_librarypermission and Scope:Any:See active "New Library" button.
Select button and fill form, specifying
OrgAin Organization.If user has Scope:
OrgAor Scope:All Organizations:Create Library A successfully.
Else (
if not Scope: OrgA AND not Scope: All Organizations):Cannot create Library.
Else (user does not have
create_librarypermission):See "New Library" button disabled.
Edit Library A
Enter Studio home.
Enter Libraries section.
If user has
view_librarypermission AND Scope:Library A:Enter Library A.
If user has
edit_librarypermission AND Scope:Library A:See active "+ new" button.
Open sidebar and select content type.
Create or edit content; save it.
Edit library name via Library Info.
See “Delete” inside the three doted menu of a content, delete the content when selected.
Else:
See "+ new" button disabled.
Delete Library A
Enter Studio home.
Enter Libraries section.
If user has
view_librarypermission AND Scope:Library A:Enter Library A.
If user has
delete_librarypermission AND Scope:Library A:Open Library Info; see active "Delete Library" button.
Delete Library A.
Else:
See "Delete Library" button disabled.
Manage Tags in Library A
Enter Studio home.
Enter Libraries section.
If user has
view_librarypermission AND Scope:Library A:Enter Library A and select content.
Open sidebar, select Manage tab, and open tags dropdown.
If user has
manage_tagspermission AND Scope:Library A:See and interact with "Add tags".
Else:
Cannot see or interact with "Add tags".
Delete Content in Library A
Enter Studio home.
Enter Libraries section.
If user has
view_librarypermission AND Scope:Library A:Enter Library A.
Select content’s three-dot menu.
If user has
delete_contentpermission AND Scope:Library A:See and select "Delete"; confirm deletion.
Else:
Cannot see "Delete" option.
Publish Content in Library A
Enter Studio home.
Enter Libraries section.
If user has
view_librarypermission AND Scope:Library A:Enter Library A and select content.
If user has
publish_contentpermission AND Scope:Library A:See and click active "Publish Component" button.
Else:
See "Publish Component" button disabled.
Publish Library A
Enter Studio home.
Enter Libraries section.
If user has
view_librarypermission AND Scope:Library A:Enter Library A.
Open Library Info.
If user has
publish_librarypermission AND Scope:Library Aand there is draft content:See and click active "Publish" button.
Content and timestamp updated.
Else:
See "Publish" button disabled.
View Library Team
Enter Studio home.
Enter Libraries section.
If user has
view_librarypermission AND Scope:Library A:Enter Library A.
Open Library Info.
If user has
view_library_teampermission AND Scope:Library A:See and click active "Manage Access" button.
View library team listed.
Else:
See "Manage Access" button disabled.
Pending Sections
Import Content from Course
To be defined.
Manage Library Team
To be defined.
Some comments regarding the first draft:
I plan to include images from the current implementation to support the discussion.
The Delete Library feature isn't currently implemented in the UI (or at least I haven't found it). I've proposed a possible flow; this option could also be added to the library list's three-dot menu within each element.
Importing content from a course was suggested by Dave, but I haven't found this action in the current interface. I assume it will be part of the next iteration currently in progress. Consequently, I haven't defined a user flow for it yet, as the current definition isn't clear.
Regarding Manage Library Team, I'm uncertain about the best approach. Currently, assigning this responsibility to the "Library Admin" makes sense. However, when the RBAC implementation expands to other sections and introduces custom roles or even default roles with many scopes, managing user access for roles broader than those defined in the MVP may become complicated, as some cases arise—for example, what happens when a Library Admin wants to restrict access to a broader role, like a custom role with permissions over both courses and libraries? Some potential solutions include:
Adhering to the current design and adapting it minimally for now, postponing definitions outside the MVP.
Redesigning the role management experience to accommodate compartmentalized admin responsibilities across the platform.
Introducing new RBAC definitions that allow modifying the scope of user permissions, for example: "Allow modifying granted scopes for permissions associated with specific resource types."
Redesigning the current libraries experience to centralize administrative actions, enabling broader management of roles and permissions beyond the libraries alone.
Something better that I haven't considered yet