File tree Expand file tree Collapse file tree 6 files changed +46
-27
lines changed Expand file tree Collapse file tree 6 files changed +46
-27
lines changed Original file line number Diff line number Diff line change @@ -1196,6 +1196,10 @@ def oidc_oauth_register(client: OAuth):
1196
1196
os .environ .get ("USER_PERMISSIONS_CHAT_SYSTEM_PROMPT" , "True" ).lower () == "true"
1197
1197
)
1198
1198
1199
+ USER_PERMISSIONS_CHAT_IMAGE_CAPTURE = (
1200
+ os .environ .get ("USER_PERMISSIONS_CHAT_IMAGE_CAPTURE" , "True" ).lower () == "true"
1201
+ )
1202
+
1199
1203
USER_PERMISSIONS_CHAT_PARAMS = (
1200
1204
os .environ .get ("USER_PERMISSIONS_CHAT_PARAMS" , "True" ).lower () == "true"
1201
1205
)
@@ -1304,6 +1308,7 @@ def oidc_oauth_register(client: OAuth):
1304
1308
"controls" : USER_PERMISSIONS_CHAT_CONTROLS ,
1305
1309
"valves" : USER_PERMISSIONS_CHAT_VALVES ,
1306
1310
"system_prompt" : USER_PERMISSIONS_CHAT_SYSTEM_PROMPT ,
1311
+ "image_capture" : USER_PERMISSIONS_CHAT_IMAGE_CAPTURE ,
1307
1312
"params" : USER_PERMISSIONS_CHAT_PARAMS ,
1308
1313
"file_upload" : USER_PERMISSIONS_CHAT_FILE_UPLOAD ,
1309
1314
"delete" : USER_PERMISSIONS_CHAT_DELETE ,
Original file line number Diff line number Diff line change @@ -145,6 +145,7 @@ class ChatPermissions(BaseModel):
145
145
controls : bool = True
146
146
valves : bool = True
147
147
system_prompt : bool = True
148
+ image_capture : bool = True
148
149
params : bool = True
149
150
file_upload : bool = True
150
151
delete : bool = True
Original file line number Diff line number Diff line change 68
68
controls: true ,
69
69
valves: true ,
70
70
system_prompt: true ,
71
+ image_capture: true ,
71
72
params: true ,
72
73
file_upload: true ,
73
74
delete: true ,
Original file line number Diff line number Diff line change 50
50
controls: true ,
51
51
valves: true ,
52
52
system_prompt: true ,
53
+ image_capture: true ,
53
54
params: true ,
54
55
file_upload: true ,
55
56
delete: true ,
Original file line number Diff line number Diff line change 24
24
valves: true ,
25
25
system_prompt: true ,
26
26
params: true ,
27
+ image_capture: true ,
27
28
file_upload: true ,
28
29
delete: true ,
29
30
delete_message: true ,
304
305
<Switch bind:state ={permissions .chat .edit } />
305
306
</div >
306
307
308
+ <div class =" flex w-full justify-between my-2 pr-2" >
309
+ <div class =" self-center text-xs font-medium" >
310
+ {$i18n .t (' Allow Image capture' )}
311
+ </div >
312
+
313
+ <Switch bind:state ={permissions .chat .image_capture } />
314
+ </div >
315
+
307
316
<div class =" flex w-full justify-between my-2 pr-2" >
308
317
<div class =" self-center text-xs font-medium" >
309
318
{$i18n .t (' Allow Chat Delete' )}
Original file line number Diff line number Diff line change 182
182
<hr class =" border-black/5 dark:border-white/5 my-1" />
183
183
{/if }
184
184
185
- <Tooltip
186
- content ={fileUploadCapableModels .length !== selectedModels .length
187
- ? $i18n .t (' Model(s) do not support file upload' )
188
- : ! fileUploadEnabled
189
- ? $i18n .t (' You do not have permission to upload files.' )
190
- : ' ' }
191
- className =" w-full"
192
- >
193
- <DropdownMenu .Item
194
- class ="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl {! fileUploadEnabled
195
- ? ' opacity-50'
196
- : ' ' }"
197
- on:click ={() => {
198
- if (fileUploadEnabled ) {
199
- if (! detectMobile ()) {
200
- screenCaptureHandler ();
201
- } else {
202
- const cameraInputElement = document .getElementById (' camera-input' );
185
+ {#if $user ?.role === ' admin' || $user ?.permissions .chat ?.image_capture }
186
+ <Tooltip
187
+ content ={fileUploadCapableModels .length !== selectedModels .length
188
+ ? $i18n .t (' Model(s) do not support file upload' )
189
+ : ! fileUploadEnabled
190
+ ? $i18n .t (' You do not have permission to upload files.' )
191
+ : ' ' }
192
+ className =" w-full"
193
+ >
194
+ <DropdownMenu .Item
195
+ class ="flex gap-2 items-center px-3 py-2 text-sm font-medium cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-800 rounded-xl {! fileUploadEnabled
196
+ ? ' opacity-50'
197
+ : ' ' }"
198
+ on:click ={() => {
199
+ if (fileUploadEnabled ) {
200
+ if (! detectMobile ()) {
201
+ screenCaptureHandler ();
202
+ } else {
203
+ const cameraInputElement = document .getElementById (' camera-input' );
203
204
204
- if (cameraInputElement ) {
205
- cameraInputElement .click ();
205
+ if (cameraInputElement ) {
206
+ cameraInputElement .click ();
207
+ }
206
208
}
207
209
}
208
- }
209
- }}
210
- >
211
- < CameraSolid / >
212
- <div class = " line-clamp-1" >{ $i18n . t ( ' Capture ' )}</ div >
213
- </DropdownMenu . Item >
214
- </ Tooltip >
210
+ }}
211
+ >
212
+ < CameraSolid / >
213
+ < div class = " line-clamp-1" >{ $i18n . t ( ' Capture ' )}</ div >
214
+ </ DropdownMenu . Item >
215
+ </Tooltip >
216
+ { /if }
215
217
216
218
<Tooltip
217
219
content ={fileUploadCapableModels .length !== selectedModels .length
You can’t perform that action at this time.
0 commit comments