Merge pull request #12866 from Ultimaker/CURA-9220_hide_if_no_permission

Hide cloud interaction buttons if the user has no permissions to them
This commit is contained in:
Jelle Spijker 2022-08-01 12:41:11 +02:00 committed by GitHub
commit 7b768ca810
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 361 additions and 93 deletions

View file

@ -33,63 +33,63 @@ Popup
thumbnail: UM.Theme.getIcon("PrinterTriple", "high"),
description: catalog.i18nc("@tooltip:button", "Monitor printers in Ultimaker Digital Factory."),
link: "https://digitalfactory.ultimaker.com/app/printers?utm_source=cura&utm_medium=software&utm_campaign=switcher-digital-factory-printers",
DFAccessRequired: true
permissionsRequired: ["digital-factory.printer.read"]
},
{
displayName: "Digital Library", //Not translated, since it's a brand name.
thumbnail: UM.Theme.getIcon("Library", "high"),
description: catalog.i18nc("@tooltip:button", "Create print projects in Digital Library."),
link: "https://digitalfactory.ultimaker.com/app/library?utm_source=cura&utm_medium=software&utm_campaign=switcher-library",
DFAccessRequired: true
permissionsRequired: ["digital-factory.project.read.shared"]
},
{
displayName: catalog.i18nc("@label:button", "Print jobs"),
thumbnail: UM.Theme.getIcon("FoodBeverages"),
description: catalog.i18nc("@tooltip:button", "Monitor print jobs and reprint from your print history."),
link: "https://digitalfactory.ultimaker.com/app/print-jobs?utm_source=cura&utm_medium=software&utm_campaign=switcher-digital-factory-printjobs",
DFAccessRequired: true
permissionsRequired: ["digital-factory.print-job.read"]
},
{
displayName: "Ultimaker Marketplace", //Not translated, since it's a brand name.
thumbnail: UM.Theme.getIcon("Shop", "high"),
description: catalog.i18nc("@tooltip:button", "Extend Ultimaker Cura with plugins and material profiles."),
link: "https://marketplace.ultimaker.com/?utm_source=cura&utm_medium=software&utm_campaign=switcher-marketplace-materials",
DFAccessRequired: false
permissionsRequired: []
},
{
displayName: "Ultimaker Academy", //Not translated, since it's a brand name.
thumbnail: UM.Theme.getIcon("Knowledge"),
description: catalog.i18nc("@tooltip:button", "Become a 3D printing expert with Ultimaker e-learning."),
link: "https://academy.ultimaker.com/?utm_source=cura&utm_medium=software&utm_campaign=switcher-academy",
DFAccessRequired: false
permissionsRequired: []
},
{
displayName: catalog.i18nc("@label:button", "Ultimaker support"),
thumbnail: UM.Theme.getIcon("Help", "high"),
description: catalog.i18nc("@tooltip:button", "Learn how to get started with Ultimaker Cura."),
link: "https://support.ultimaker.com/?utm_source=cura&utm_medium=software&utm_campaign=switcher-support",
DFAccessRequired: false
permissionsRequired: []
},
{
displayName: catalog.i18nc("@label:button", "Ask a question"),
thumbnail: UM.Theme.getIcon("Speak", "high"),
description: catalog.i18nc("@tooltip:button", "Consult the Ultimaker Community."),
link: "https://community.ultimaker.com/?utm_source=cura&utm_medium=software&utm_campaign=switcher-community",
DFAccessRequired: false
permissionsRequired: []
},
{
displayName: catalog.i18nc("@label:button", "Report a bug"),
thumbnail: UM.Theme.getIcon("Bug", "high"),
description: catalog.i18nc("@tooltip:button", "Let developers know that something is going wrong."),
link: "https://github.com/Ultimaker/Cura/issues/new/choose",
DFAccessRequired: false
permissionsRequired: []
},
{
displayName: "Ultimaker.com", //Not translated, since it's a URL.
thumbnail: UM.Theme.getIcon("Browser"),
description: catalog.i18nc("@tooltip:button", "Visit the Ultimaker website."),
link: "https://ultimaker.com/?utm_source=cura&utm_medium=software&utm_campaign=switcher-umwebsite",
DFAccessRequired: false
permissionsRequired: []
}
]
@ -99,7 +99,24 @@ Popup
iconSource: modelData.thumbnail
tooltipText: modelData.description
isExternalLink: true
visible: modelData.DFAccessRequired ? Cura.API.account.isLoggedIn & Cura.API.account.additionalRights["df_access"] : true
visible:
{
try
{
modelData.permissionsRequired.forEach(function(permission)
{
if(!Cura.API.account.isLoggedIn || !Cura.API.account.permissions.includes(permission)) //This required permission is not in the account.
{
throw "No permission to use this application."; //Can't return from within this lambda. Throw instead.
}
});
}
catch(e)
{
return false;
}
return true;
}
onClicked: Qt.openUrlExternally(modelData.link)
}

View file

@ -88,7 +88,15 @@ UM.Window
{
if(Cura.API.account.isLoggedIn)
{
swipeView.currentIndex += 2; //Skip sign in page.
if(Cura.API.account.permissions.includes("digital-factory.printer.write"))
{
swipeView.currentIndex += 2; //Skip sign in page. Continue to sync via cloud.
}
else
{
//Logged in, but no permissions to start syncing. Direct them to USB.
swipeView.currentIndex = removableDriveSyncPage.SwipeView.index;
}
}
else
{
@ -112,7 +120,15 @@ UM.Window
{
if(is_logged_in && signinPage.SwipeView.isCurrentItem)
{
swipeView.currentIndex += 1;
if(Cura.API.account.permissions.includes("digital-factory.printer.write"))
{
swipeView.currentIndex += 1;
}
else
{
//Logged in, but no permissions to start syncing. Direct them to USB.
swipeView.currentIndex = removableDriveSyncPage.SwipeView.index;
}
}
}
}