with Softr and Google Identity?
Removes an existing user from your Softr app. Be aware, this action is irreversible. See the documentation
Generate a Magic Link for the specified user in your Softr app. See the documentation
The Softr API unlocks the power to automate and integrate Softr-built web apps with a multitude of external services and internal workflows. With it, you can streamline data manipulation, sync content, or trigger actions based on specific events. Create, update, and fetch data from your Softr applications, and leverage this functionality to enhance user experience, improve operational efficiency, and reduce manual workloads. When used on Pipedream, the API can connect with other apps to create robust, serverless workflows that operate in real-time or on a scheduled basis.
import { axios } from "@pipedream/platform"
export default defineComponent({
props: {
softr: {
type: "app",
app: "softr",
}
},
async run({steps, $}) {
return await axios($, {
url: `https://studio-api.softr.io/v1/api/users`,
headers: {
"Softr-Api-Key": `${this.softr.$auth.api_key}`,
"Softr-Domain": `${this.softr.$auth.domain}`,
"Content-Type": `application/json`,
},
})
},
})
import axios from "axios";
import * as jsrsasign from "jsrsasign";
export default defineComponent({
props: {
google_identity: {
type: "app",
app: "google_identity",
}
},
async run({ steps, $ }) {
const serviceAccountKey = JSON.parse(this.google_identity.$auth.service_account_key);
const GOOGLE_OAUTH = 'https://www.googleapis.com/oauth2/v4/token';
// add/remove your own scopes as needed
const SCOPES = [
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/cloud-identity',
];
const getJwt = async function ({ client_email, private_key }, iat) {
const header = {
typ: 'JWT',
alg: 'RS256',
};
const exp = iat + 3600;
const payload = {
aud: GOOGLE_OAUTH,
iss: client_email,
scope: SCOPES.join(' '),
iat,
exp,
};
const jwt = jsrsasign.KJUR.jws.JWS.sign(null, header, payload, private_key);
return { jwt, exp };
};
const getToken = async function (serviceAccountKey) {
const now = Math.floor(Date.now() / 1000);
const jwtInfo = await getJwt(serviceAccountKey, now);
const params = new URLSearchParams();
params.append('grant_type', 'urn:ietf:params:oauth:grant-type:jwt-bearer');
params.append('assertion', jwtInfo.jwt);
const response = await axios.post(GOOGLE_OAUTH, params, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
const accessToken = response.data.access_token;
return accessToken;
};
const generateOAuthToken = async function () {
return await getToken(serviceAccountKey);
};
// Call the function to generate the token
const accessToken = await generateOAuthToken();
// Call the Google Identity API to search for groups
const response = await axios({
method: "GET",
url: "https://cloudidentity.googleapis.com/v1/groups:search",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json"
},
params: {
query: "parent == 'customers/C046psxkn'"
}
})
return response.data
},
})