enh: access grant level perms
This commit is contained in:
@@ -395,6 +395,28 @@
|
||||
|
||||
<hr class=" border-gray-100/30 dark:border-gray-850/30" />
|
||||
|
||||
<div>
|
||||
<div class=" mb-2 text-sm font-medium">{$i18n.t('Access Grants')}</div>
|
||||
|
||||
<div class="flex flex-col w-full">
|
||||
<div class="flex w-full justify-between my-1">
|
||||
<div class=" self-center text-xs font-medium">
|
||||
{$i18n.t('Allow Sharing With Users')}
|
||||
</div>
|
||||
<Switch bind:state={permissions.access_grants.allow_users} />
|
||||
</div>
|
||||
{#if defaultPermissions?.access_grants?.allow_users && !permissions.access_grants.allow_users}
|
||||
<div>
|
||||
<div class="text-xs text-gray-500">
|
||||
{$i18n.t('This is a default user permission and will remain enabled.')}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class=" border-gray-100/30 dark:border-gray-850/30" />
|
||||
|
||||
<div>
|
||||
<div class=" mb-2 text-sm font-medium">{$i18n.t('Chat Permissions')}</div>
|
||||
|
||||
|
||||
@@ -871,6 +871,9 @@ Provide the enhanced notes in markdown format. Use markdown syntax for headings,
|
||||
bind:show={showAccessControlModal}
|
||||
bind:accessGrants={note.access_grants}
|
||||
accessRoles={['read', 'write']}
|
||||
share={$user?.permissions?.sharing?.notes || $user?.role === 'admin'}
|
||||
sharePublic={$user?.permissions?.sharing?.public_notes || $user?.role === 'admin'}
|
||||
shareUsers={$user?.permissions?.access_grants?.allow_users || $user?.role === 'admin'}
|
||||
onChange={async () => {
|
||||
if (id) {
|
||||
try {
|
||||
|
||||
@@ -115,6 +115,7 @@
|
||||
accessRoles={['read', 'write']}
|
||||
share={$user?.permissions?.sharing?.knowledge || $user?.role === 'admin'}
|
||||
sharePublic={$user?.permissions?.sharing?.public_knowledge || $user?.role === 'admin'}
|
||||
shareUsers={$user?.permissions?.access_grants?.allow_users || $user?.role === "admin"}
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -837,6 +837,7 @@
|
||||
bind:accessGrants={knowledge.access_grants}
|
||||
share={$user?.permissions?.sharing?.knowledge || $user?.role === 'admin'}
|
||||
sharePublic={$user?.permissions?.sharing?.public_knowledge || $user?.role === 'admin'}
|
||||
shareUsers={$user?.permissions?.access_grants?.allow_users || $user?.role === "admin"}
|
||||
onChange={async () => {
|
||||
try {
|
||||
await updateKnowledgeAccessGrants(localStorage.token, id, knowledge.access_grants ?? []);
|
||||
|
||||
@@ -332,6 +332,7 @@
|
||||
accessRoles={preset ? ['read', 'write'] : ['read']}
|
||||
share={$user?.permissions?.sharing?.models || $user?.role === 'admin'}
|
||||
sharePublic={$user?.permissions?.sharing?.public_models || $user?.role === 'admin'}
|
||||
shareUsers={$user?.permissions?.access_grants?.allow_users || $user?.role === "admin"}
|
||||
onChange={async () => {
|
||||
if (edit && model?.id) {
|
||||
try {
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
accessRoles={['read', 'write']}
|
||||
share={$user?.permissions?.sharing?.prompts || $user?.role === 'admin'}
|
||||
sharePublic={$user?.permissions?.sharing?.public_prompts || $user?.role === 'admin'}
|
||||
shareUsers={$user?.permissions?.access_grants?.allow_users || $user?.role === 'admin'}
|
||||
onChange={async () => {
|
||||
if (edit && prompt?.id) {
|
||||
try {
|
||||
|
||||
@@ -114,6 +114,7 @@
|
||||
accessRoles={['read', 'write']}
|
||||
share={$user?.permissions?.sharing?.skills || $user?.role === 'admin'}
|
||||
sharePublic={$user?.permissions?.sharing?.public_skills || $user?.role === 'admin'}
|
||||
shareUsers={$user?.permissions?.access_grants?.allow_users || $user?.role === 'admin'}
|
||||
onChange={async () => {
|
||||
if (edit && skill?.id) {
|
||||
try {
|
||||
|
||||
@@ -193,6 +193,7 @@ class Tools:
|
||||
accessRoles={['read', 'write']}
|
||||
share={$user?.permissions?.sharing?.tools || $user?.role === 'admin'}
|
||||
sharePublic={$user?.permissions?.sharing?.public_tools || $user?.role === 'admin'}
|
||||
shareUsers={$user?.permissions?.access_grants?.allow_users || $user?.role === 'admin'}
|
||||
onChange={async () => {
|
||||
if (edit && id) {
|
||||
try {
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
|
||||
export let share = true;
|
||||
export let sharePublic = true;
|
||||
export let shareUsers = true;
|
||||
|
||||
let groups: any[] = [];
|
||||
const resolvingGroupIds = new Set<string>();
|
||||
@@ -419,7 +420,7 @@
|
||||
});
|
||||
</script>
|
||||
|
||||
<AddAccessModal bind:show={showAddAccessModal} onAdd={handleAddAccess} />
|
||||
<AddAccessModal bind:show={showAddAccessModal} {shareUsers} onAdd={handleAddAccess} />
|
||||
|
||||
<div class=" rounded-lg flex flex-col gap-1">
|
||||
<div class="py-2">
|
||||
@@ -562,6 +563,7 @@
|
||||
{/each}
|
||||
|
||||
<!-- Users -->
|
||||
{#if shareUsers}
|
||||
{#each selectedUsers as user}
|
||||
<div
|
||||
class="flex items-center gap-3 justify-between text-sm w-full transition border-b border-gray-50 dark:border-gray-850 pb-2 last:border-0"
|
||||
@@ -607,6 +609,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{/each}
|
||||
{/if}
|
||||
|
||||
{#if !hasPublicReadGrant(accessGrants ?? []) && accessGroups.length === 0 && selectedUsers.length === 0}
|
||||
<div class="text-xs text-gray-500 text-center py-4">
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
export let share = true;
|
||||
export let sharePublic = true;
|
||||
export let shareUsers = true;
|
||||
|
||||
export let onChange = () => {};
|
||||
</script>
|
||||
@@ -48,6 +49,7 @@
|
||||
{accessRoles}
|
||||
{share}
|
||||
{sharePublic}
|
||||
{shareUsers}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
import MemberSelector from '$lib/components/workspace/common/MemberSelector.svelte';
|
||||
|
||||
export let show = false;
|
||||
export let shareUsers = true;
|
||||
export let onAdd = (payload: { userIds: string[]; groupIds: string[] }) => {};
|
||||
|
||||
let userIds: string[] = [];
|
||||
@@ -51,7 +52,7 @@
|
||||
}}
|
||||
>
|
||||
<div class="flex flex-col w-full h-full pb-2">
|
||||
<MemberSelector bind:userIds bind:groupIds includeGroups={true} />
|
||||
<MemberSelector bind:userIds bind:groupIds includeGroups={true} includeUsers={shareUsers} />
|
||||
</div>
|
||||
|
||||
<div class="flex justify-end pt-3 text-sm font-medium gap-1.5">
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
import { getGroups } from '$lib/apis/groups';
|
||||
|
||||
export let includeGroups = true;
|
||||
export let includeUsers = true;
|
||||
export let pagination = false;
|
||||
|
||||
export let groupIds = [];
|
||||
@@ -237,6 +238,7 @@
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if includeUsers}
|
||||
<div class="text-xs text-gray-500 mb-1 mx-1">
|
||||
{$i18n.t('Users')}
|
||||
</div>
|
||||
@@ -295,6 +297,7 @@
|
||||
{/if}
|
||||
{/each}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user