mirror of
https://github.com/HeyPuter/puter.git
synced 2026-08-29 01:16:43 +00:00
Permission modal now displays application's icon and title. Read and write access requests have their own text strings. (#2499)
This commit is contained in:
@@ -41,7 +41,17 @@ async function UIWindowRequestPermission (options) {
|
||||
* Creates the permission dialog
|
||||
*/
|
||||
async function create_permission_window (options, permission_description, resolve) {
|
||||
const requestingEntity = options.app_name ?? options.origin;
|
||||
const user_apps = await puter.apps.list();
|
||||
const app_data = user_apps.find(a => a.name === options.app_name);
|
||||
const app_icon = app_data.icon;
|
||||
|
||||
const requestingEntity = {
|
||||
name: options.app_name || '',
|
||||
origin: options.origin || '',
|
||||
title: app_data.title,
|
||||
icon: app_icon.image,
|
||||
};
|
||||
|
||||
const h = create_window_content(requestingEntity, permission_description);
|
||||
|
||||
return await UIWindow({
|
||||
@@ -89,10 +99,10 @@ function create_window_content (requestingEntity, permission_description) {
|
||||
h += '<div>';
|
||||
h += '<div style="padding: 20px; width: 100%; box-sizing: border-box;">';
|
||||
// title
|
||||
h += `<h1 class="perm-title">${html_encode(requestingEntity)}</h1>`;
|
||||
h += `<h1 class="perm-title"><img src="${html_encode(requestingEntity.icon)}"/> ${html_encode(requestingEntity.title)}</h1>`;
|
||||
|
||||
// description (already HTML encoded)
|
||||
h += `<p class="perm-description">${html_encode(requestingEntity)} is requesting permission to ${permission_description}</p>`;
|
||||
h += `<p class="perm-description">${html_encode(requestingEntity.title)} is requesting permission to ${permission_description}</p>`;
|
||||
|
||||
// Allow/Don't Allow
|
||||
h += `<button type="button" class="app-auth-allow button button-primary button-block" style="margin-top: 10px;">${i18n('allow')}</button>`;
|
||||
@@ -255,12 +265,12 @@ async function get_standard_folder_description (resource_id, action) {
|
||||
const whoami = await puter.auth.whoami();
|
||||
const directories = whoami.directories || {};
|
||||
|
||||
// Standard folder names we recognize - maps to i18n keys
|
||||
// Standard folder names we recognize - maps to i18n keys per action
|
||||
const folder_i18n_keys = {
|
||||
'Desktop': 'perm_folder_desktop',
|
||||
'Documents': 'perm_folder_documents',
|
||||
'Pictures': 'perm_folder_pictures',
|
||||
'Videos': 'perm_folder_videos',
|
||||
'Desktop': { read: 'perm_folder_read_desktop', write: 'perm_folder_write_desktop' },
|
||||
'Documents': { read: 'perm_folder_read_documents', write: 'perm_folder_write_documents' },
|
||||
'Pictures': { read: 'perm_folder_read_pictures', write: 'perm_folder_write_pictures' },
|
||||
'Videos': { read: 'perm_folder_read_videos', write: 'perm_folder_write_videos' },
|
||||
};
|
||||
|
||||
// Check if resource_id matches any of the user's standard directories
|
||||
@@ -274,14 +284,13 @@ async function get_standard_folder_description (resource_id, action) {
|
||||
if ( path_parts.length !== 2 ) continue;
|
||||
|
||||
const folder_name = path_parts[1];
|
||||
const folder_i18n_key = folder_i18n_keys[folder_name];
|
||||
const folder_actions = folder_i18n_keys[folder_name];
|
||||
if ( ! folder_actions ) continue;
|
||||
|
||||
const folder_i18n_key = folder_actions[action];
|
||||
if ( ! folder_i18n_key ) continue;
|
||||
|
||||
const folder_desc = i18n(folder_i18n_key);
|
||||
return i18n('perm_folder_access', {
|
||||
access: `<strong>${html_encode(action)}</strong>`,
|
||||
folder: folder_desc,
|
||||
}, false);
|
||||
return i18n(folder_i18n_key);
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@@ -3619,7 +3619,10 @@ fieldset[name=number-code] {
|
||||
}
|
||||
|
||||
.perm-title {
|
||||
text-align: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
margin-top: 0;
|
||||
padding-bottom: 15px;
|
||||
font-size: 20px;
|
||||
|
||||
@@ -565,15 +565,18 @@ const en = {
|
||||
// Permission Descriptions
|
||||
'perm_fs_file_access': 'use {{name}} located at {{path}} with {{access}} access.',
|
||||
'perm_fs_resource_access': 'access {{resource_id}} with {{access}} access.',
|
||||
'perm_folder_access': '{{access}} {{folder}}.',
|
||||
'perm_thread_post': 'post to thread {{thread}}.',
|
||||
'perm_service_invoke': 'use {{service}} to invoke {{interface}}.',
|
||||
'perm_driver_use': 'use {{driver}} to {{action}}.',
|
||||
'perm_email_read': 'see your email address',
|
||||
'perm_folder_desktop': 'your Desktop folder',
|
||||
'perm_folder_documents': 'your Documents folder',
|
||||
'perm_folder_pictures': 'your Pictures folder',
|
||||
'perm_folder_videos': 'your Videos folder',
|
||||
'perm_folder_read_desktop': 'read files from your Desktop',
|
||||
'perm_folder_write_desktop': 'save and modify files on your Desktop',
|
||||
'perm_folder_read_documents': 'read files in your Documents folder',
|
||||
'perm_folder_write_documents': 'save and modify files in your Documents folder',
|
||||
'perm_folder_read_pictures': 'view files in your Pictures folder',
|
||||
'perm_folder_write_pictures': 'save and modify files in your Pictures folder',
|
||||
'perm_folder_read_videos': 'access files in your Videos folder',
|
||||
'perm_folder_write_videos': 'save and modify files in your Videos folder',
|
||||
'perm_apps_read': 'see your apps',
|
||||
'perm_apps_write': 'manage your apps',
|
||||
'perm_subdomains_read': 'see your subdomains',
|
||||
|
||||
@@ -534,15 +534,18 @@ const fr = {
|
||||
// Permission Descriptions
|
||||
'perm_fs_file_access': 'utiliser {{name}} situé à {{path}} avec un accès {{access}}.',
|
||||
'perm_fs_resource_access': 'accéder à {{resource_id}} avec un accès {{access}}.',
|
||||
'perm_folder_access': '{{access}} {{folder}}.',
|
||||
'perm_thread_post': 'publier sur le fil {{thread}}.',
|
||||
'perm_service_invoke': 'utiliser {{service}} pour invoquer {{interface}}.',
|
||||
'perm_driver_use': 'utiliser {{driver}} pour {{action}}.',
|
||||
'perm_email_read': 'voir votre adresse e-mail',
|
||||
'perm_folder_desktop': 'votre dossier Bureau',
|
||||
'perm_folder_documents': 'votre dossier Documents',
|
||||
'perm_folder_pictures': 'votre dossier Images',
|
||||
'perm_folder_videos': 'votre dossier Vidéos',
|
||||
'perm_folder_read_desktop': 'lire les fichiers de votre Bureau, afin de pouvoir accéder à vos fichiers et les ouvrir',
|
||||
'perm_folder_write_desktop': 'enregistrer et modifier des fichiers sur votre Bureau, afin de pouvoir stocker des fichiers pour vous',
|
||||
'perm_folder_read_documents': 'lire les fichiers de votre dossier Documents, afin de pouvoir ouvrir vos documents',
|
||||
'perm_folder_write_documents': 'enregistrer et modifier des fichiers dans votre dossier Documents, afin de pouvoir sauvegarder votre travail',
|
||||
'perm_folder_read_pictures': 'consulter les fichiers de votre dossier Images, afin de pouvoir afficher vos images',
|
||||
'perm_folder_write_pictures': 'enregistrer et modifier des fichiers dans votre dossier Images, afin de pouvoir stocker vos images',
|
||||
'perm_folder_read_videos': 'accéder aux fichiers de votre dossier Vidéos, afin de pouvoir lire vos vidéos',
|
||||
'perm_folder_write_videos': 'enregistrer et modifier des fichiers dans votre dossier Vidéos, afin de pouvoir stocker vos vidéos',
|
||||
'perm_apps_read': 'voir vos applications',
|
||||
'perm_apps_write': 'gérer vos applications',
|
||||
'perm_subdomains_read': 'voir vos sous-domaines',
|
||||
|
||||
Reference in New Issue
Block a user