Can test users download add-ons from Google Workspace Marketplace when the user type is public-testing? - google-workspace

I'm going to publish the app using Google cloud console.
Less than 100 users will use it.
I'm going to use user type - External testing, but I have a question here.
Even if the user type is external-testing, if it is registered as a test user,
Can I download it in the Google Workspace Marketplace Regardless of the company's domain?
Even if the user type is external-testing
Do I need to set the app visibility to public in APP configuration of Google Workspace MarketPlace SDK API
and then go through the application qualification examination?
Please understand my lack of English. If there's anything you don't understand in the question, please leave a comment. Thank you.

Google Workspace Add On
To start, I would like to answer both questions:
The external would not be able to download or install the add on itself from the Workspace Marketplace due to the Add On not being listed at all for the external users (Gmail user).
It would not be necessary to make it public, also you would need to redo the process to make it public as it is already selected as internal. As long as they have the permission to access the project and the App Script that it was based on you can collaborate with external.
Collaborating with external users
If both the project and the App Script are share with external user (Gmail for example), you can edit the App Script manifest to something similar to what I have for a testing Sheet Add On:
// You would need to add this under the appscript.json file, You can find it under the settings of your App Script file.
{
"timeZone": "America/Guatemala",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Sheet",
"logoUrl": "https://www.gstatic.com/images/branding/product/1x/translate_24dp.png",
"layoutProperties": {
"primaryColor": "#2772ed"
},
"homepageTrigger": {
"runFunction": "welcomeMessage"
}
},
"sheets" : {}
}}
Keep in mind that the manifest works for Google Sheet, however it would depend on what service you are using would need a different reference. You can then make a test deployment as a Google Workspace Add On:
This way you would be able to add the application and run some test on it or add it as a normal way and Add on would look like.
Sample of my configuration on GCP from a project of my domain:
References:
https://developers.google.com/apps-script/add-ons/how-tos/testing-workspace-addons
https://developers.google.com/apps-script/manifest/addons
https://developers.google.com/apps-script/add-ons/how-tos/publish-add-on-overview

Related

firebase_functions/unauthenticated UNAUTHENTICATED Flutter firebase functions admin [duplicate]

Recently I added a couple of new callable firebase cloud functions to my mobile app. The thins is, once I deployed and tested my functions I was not able to invoke them failing with an UNAUTHENTICATED error. I re-deployed all my functions and still, the old ones can be invoked while the new one failed with UNAUTHENTICATED. I did some research and people were talking about the version of the Node. I upgraded the Node version but it did not work out. I upgraded the firebase-functions version and the firebase-admin version. No luck.
I tried to browse to the URL of one of the older callable cloud functions that I have deployed before and it was ok. Then I tried to browse to a newly deployed https callable firebase cloud function. I saw this message in my browser:
Your client does not have permission to get URL /function_name from this server.
Any ideas what is going on here?
Thanks
Ok, here is what I found.
According to this page: https://cloud.google.com/functions/docs/securing/managing-access-iam#allowing_unauthenticated_function_invocation
As of January 15, 2020, HTTP functions require authentication by
default. You can specify whether a function allows unauthenticated
invocation at or after deployment.
Here is what you do:
1- Browse to the link above
2- Find "Viewing users" section and click on the "Go to Google Cloud Console" button.
3- On the screen that opens, you will see a list of your deployed cloud functions.
Select the one that is throwing the UNAUTHENTICATED error.
Click the Add Member button that appears on the right pane.
4- Select Cloud Functions Invoker role
5- Type allusers inside the "New Members" box. Select allUsers or allAuthenticatedUsers (Try with both to see which one works for you)
6- Hit "Save"
You should be able to invoke your firebase https callable cloud function now, and the UNAUTHENTICATED error should be gone.
I was having the same problem and what worked for me, was as simple as changing the function's name in the file (and of course where it was called) and redeploying it, which automatically deleted the first one.
EDIT #1: I've just had the same problem again and this time, I didn't rename the function. I only deleted the function manually inside firebase and then I redeployed it. It also works.
EDIT #2: Once again I had the same problem. However, this time I couldn't fix it with the alternatives above. I had upgraded my firebase-tools and something on this new version (10.3.1) was conflicting. Until I figure out what is the problem, I just downgraded firebase-tools (following this: https://stackoverflow.com/a/57262942/14608654) to version 10.2.2 and the error vanished.
in my case, I write wrong function name in my Flutter app
final callable = _functions.httpsCallable('wrong function name in here');

How to protect the source code of Flutter Web deployed to Firebase Hosting?

I made a Flutter Website and I deployed to Firebase Hosting, if I inspect the page on Google Chrome, in "Sources" tab it's possible get the source code of the website.
Is there any way to protect the source code, not having the entire code exposed like this?
If you look at the source file you will see that it is compiled/minified.
// snippet
var r
var q=d
try{if(a[b]===s){r=a[b]=q
r=a[b]=d()}else r=a[b]}finally{if(r===q)a[b]=null
a[c]=function(){return this[b]}}return r}}function lazy(a,b,c,d){var s=a
a[b]=s
What you are seeing are the sourcemaps which show a developer friendly view of the compiled/minified code. I don't see any options for turning sourcemaps off.
Something to keep in mind is that you are shipping a client side app. Once code is on other computers there is not much you can do to prevent them from reverse engineering it.
As described in this page, you need to build your web app using the flutter build web command, then deploy what you find in the ./build/web folder, to Firebase.
It seems that your are hosting your entire app directory.
You need to build your website with 'flutter build web'.
Then 'firebase deploy' the build/web directory.
You need to specify in your firebase.json at the route of the project :
{
"hosting": {
"site": "YOUR_WEBSITE_NAME",
"public": "build/web/",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
]
}
}

Conversational Actions quick start guide - failing

First timer here and I'm stuck :(
I'm trying to get a project of the ground by following the quick start guide. I've tried countless different ways of creating a project in the Actions Console. I believe that it should be New project -> Game -> Blank project (for smart display). I have enabled the Actions API for that project.
I created the project like this gactions init interactive-canvas --dest test-canvas
I have updated the file sdk/settings/settings.yaml with my project ID.
When I try to push my project with gactions push I get a couple of warnings and especially this one Custom actions can only be specified in Conversational Actions projects:
...
Waiting for server to respond...
[WARNING] Server found validation issues (however, your files were still pushed):
Locale Validation Result
Custom actions can only be specified in Conversational Actions projects.
en Short description is required
en Long description is required
...
When I try to run gactions deploy preview I get the following error:
Deploying files in the project "test-canvas" to Actions Console for preview. This may take a few minutes.
Sending configuration files...
Sending resources...
Waiting for server to respond. It could take up to 1 minute if your cloud function needs to be redeployed.
[ERROR] Server did not return HTTP 200.
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"details": [
{
"#type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"description": "Custom actions can only be specified in Conversational Actions projects."
}
]
}
]
}
}
How do I create a Conversational Actions project? I thought that I was doing that all along? I am Confused. Can anyone point me in the right direction?
Thanks!
Kind regards,
Tobias
$ gactions version
3.0.0+316143447
I'm trying start up a project too. I get that same error message, and I'm wondering if it's something on Google's side that needs to be fixed. For now, I'm just using gactions push when I update any code and going to Actions Console > Webhooks and clicking on Deploy. I wait for it to deploy to the server then I click on the Test tab to play with the simulator.

Alfresco Workflow notification email template

I'm new to Alfresco, and I have been trying to customize the email templates for workflow notifications. I have two issues that I appreciate some help with:
I have accidentally deleted the default template from the repository. When I uploaded it again, it gives me this error when trying to send an email:
Exception while invoking TaskListener: Node does not exist: workspace://SpacesStore/wf-email-html-ftl(Status[changeTxnId=fd950a3d-d236-4cb8-b2df-3337187c6aef, dbTxnId=1250, deleted=true])
Second, I want to include a link to the WF's document in the email sent. For this I need the site id in order to include it in the url of the link to be displayed. I tried to retrieve it from space object but it's not working. (I was testing on the server on which my application was deployed. On my local machine, I am getting the error above in my eclipse project's console, so I'm not being able to test and get the exact error.)
I appreciate any help and Thx in advance.
I've you've deleted it, go to your trashcan through the old explorer interface /alfresco.
Or login as admin and go to the trashcan in Share and restore your file.
If you upload the file, it gets a new UUID, so references will be broken.
You don't need the site id in theory. You can browse to the same document through the Repository which doesn't have a site :).
This is an example from my environment: share/page/document-details?nodeRef=workspace://SpacesStore/fbb062e6-e941-42bf-ade4-3ac3acc05501
So it's just /share/page/document-details?nodeRef=<UUID>

How do you deploy a website and database project using TFS 2010?

I've been trying to figure this out and so far haven't found a simple solution. Is it really that hard to deploy a database project (and a web site) using TFS 2010 as part of the build process?
I've found one example that involved lots of complicated checks and editing the workflow (which is a giant workflow btw).
I've even purchased the book "professional application lifecycle management with VS 2010", but apparently professionals don't deploy their applications since it isn't even mentioned in the book.
I know I'm retarded when it comes to TFS, but it seems like there should be any easy way to do this. Is there?
I can't speak for the database portion, but I just went through this on the web portion, the magic part is not very well documented component, namely the MSBuild Parameters.
In your build definition:
Process on the Left
Required > Items to Build > Configurations to Build
Edit, add a new one, for this example
Configuration: Dev (I cover how to create a configuration below)
Platform: Any CPU
Advanced > MSBuild Process
Use the following arguments (at least for me, your publish method may vary).
MsBuild Params:
/p:MSDeployServiceURL="http://myserver"
/p:MSDeployPublishMethod=RemoteAgent
/p:DeployOnBuild=True
/p:DeployTarget=MsDeployPublish
/p:CreatePackageOnPublish=True
/p:username=aduser
/p:password=adpassword
Requirements:
You need to install the MS Deploy Remote Agent Service on the destination web server, MSDeploy needs to be on the Build/Deployer server as well, but this should be the case by default.
The account you use in the params above needs admin access, at least to IIS...I'm not sure what the minimum permission requirements are.
You configure which WebSite/Virtual Directory the site goes to in the Web project you're deploying. Personally I have a build configuration for each environment, this makes the builds very easy to handle and organize. For example we have Release, Debug and Dev (there are more but for this example that's it). Only the Web project has a Dev configuration.
To do this, right click the solution, Configuration Manager..., On the web project click the configuration drop down, click New.... Give it a name, "Dev" for this example, copy settings from debug or release, whatever matches closest to what your deployment server environment should be. Make sure "Create new solution configurations" is checked, it is by default. After creating this, change the configuration dropdown on the solution to the new Dev one, and Any CPU...make sure your projects are all correct, I had some flipping to x86 and x64 randomly, not sure of the exact cause of that).
In your web project, right click, properties. On the left, click Package/Publish Web (you'll also want to mess with the other Package/Publish SQL tab, but I can't speak to that). In the options on the right click Create deployment package as a zip file. The default location is fine, the next textbox I didn't find documented anywhere. The format is this: WebSite/Virtual Directory, so if you have a site called "BuildSite" in IIS with no virtual directory (app == site root), you would have BuildSite only in this box. If it was in a virtual directory, you might have Default Web Site/BuildVirtualDirectory.
After you set all that, make sure to check-in the solution and web project so the build server has the configuration changes you made, then kick off a build :)
If you have more questions, I recommend you watch this video by Vishal Joshi, specifically around 22 and 59 minutes in, he covers the database portion as well...but I have no actual experience trying it since we're on top of a non MSSQL database.