getSecret( )
Gets a secret by name.
Description
The getSecret()
function returns a Promise that resolves to the value of the secret
that was stored in the Secrets Manager with the given name.
Note: To prevent malicious users from accessing the value of your secret, don't return the value of the secret to client side. Only use the secret's value in the backend.
Syntax
function getSecret(name: string): Promise<string>
getSecret Parameters
NAME
TYPE
DESCRIPTION
The name of the secret to get the value of.
Returns
Fulfilled - The value of the secret with the given name. Rejected - Error message.
Return Type:
Was this helpful?
1import { Permissions, webMethod } from 'wix-web-module';2import wixSecretsBackend from 'wix-secrets-backend';3import { getJSON } from 'wix-fetch';45export const getSomeJSON = webMethod(Permissions.Anyone, () => {6 return wixSecretsBackend.getSecret("myApiKeyName")7 .then((secret) => {8 return getJSON(`https://someapi.com/api/someendpoint?apiKey=${secret}`);9 })10 .catch((error) => {11 console.error(error);12 });13});1415export const getFirstSecretValue = webMethod(Permissions.Anyone, () => {16 return wixSecretsBackend.listSecretInfo()17 .then((secrets) => {18 return wixSecretsBackend.getSecret(secrets[0].name);19 })20 .catch((error) => {21 console.error(error);22 });23});
This example demonstrates how to delete the first secret stored in the Secrets Manager. First we retrieve the ID of the secret using the listSecretInfo() function. Then we get the value of the secret using the retrieved ID.
12import { Permissions, webMethod } from 'wix-web-module';3import wixSecretsBackend from 'wix-secrets-backend';45export const getFirstSecretValue = webMethod(Permissions.Anyone, () => {6 return wixSecretsBackend.listSecretInfo()7 .then((secrets) => {8 return wixSecretsBackend.getSecret(secrets[0].name);9 })10 .catch((error) => {11 console.error(error);12 });13});1415/*16 * Returns a Promise that resolves to:17 *18 * "Fm8OfflH6bJOwWjenqAtLurLbkiMNvmhQHZV+118"19 */20
In this example, we use the Secrets API to get an API key from the Secrets Manager. We use the key in the backend to fetch a JSON with weather information from a 3rd-party service, and return the JSON to the client side.
1/************************************2 * Backend code - getWeather.web.js *3 ************************************/45import { Permissions, webMethod } from 'wix-web-module';6import wixSecretsBackend from 'wix-secrets-backend';7import { getJSON } from 'wix-fetch';89export const getWeatherJson = webMethod(Permissions.Anyone, async () => {10 const secret = await wixSecretsBackend.getSecret("openWeatherApiKey");11 return getJSON(`https://api.openweathermap.org/data/2.5/weather?q=London&units=metric&APPID=${secret}`);12});1314/********************15 * Client-side code *16 ********************/1718import { getWeatherJson } from 'backend/getWeather.web';1920export async function getWeather_click(event) {21 let json = await getWeatherJson();22 $w("#weather").text = json.weather[0].description; // "mist"23 $w("#temp").text = json.main.temp; // 9.4 (degrees Celsius)24}
In this example, we added the SendGrid package to our site using the Package Manager. We created a backend function that gets an API key from the Secrets Manager, sets it as the SendGrid API key, and sends an email using the SendGrid service. We call the function from the client side when a site visitor submits email information via a form.
1/************************************2 * Backend code - sendEmail.web.js *3 ************************************/45import { Permissions, webMethod } from 'wix-web-module';6import wixSecretsBackend from 'wix-secrets-backend';7import sendGridMail from '@sendgrid/mail';89export const sendEmail = webMethod(Permissions.Anyone, async (recipient, sender, subject, body) => {10 const secret = await wixSecretsBackend.getSecret("SendGridApiKey");11 sendGridMail.setApiKey(secret);12 const message = {13 "to": recipient,14 "from": sender,15 "subject": subject,16 "text": body17 };18 sendGridMail.send(message);19});2021/********************22 * Client-side code *23 ********************/2425import { sendEmail } from 'backend/sendEmail.web';2627export function sendEmailButton_click(event) {28 sendEmail(29 $w("#toEmail").value,30 $w("#fromEmail").value,31 $w("#subject").value,32 $w("#emailContent").value33 )34 .then(() => {35 console.log("Email sent");36 })37 .catch((error) => {38 console.error(error);39 })40}