Skip to content

Instantly share code, notes, and snippets.

@xLEWKANx
Created May 3, 2019 10:24
Show Gist options
  • Save xLEWKANx/2ce304284d9f1e47d7e3c9af4f9dd56c to your computer and use it in GitHub Desktop.
Save xLEWKANx/2ce304284d9f1e47d7e3c9af4f9dd56c to your computer and use it in GitHub Desktop.
Back4App and Virgil server
const axios = require("axios");
const { JwtGenerator } = require("virgil-sdk");
const { VirgilCrypto, VirgilAccessTokenSigner } = require("virgil-crypto");
const crypto = new VirgilCrypto();
const APP_ID = "YOUR_VIRGIL_APP_ID";
const API_KEY = "YOUR_VIRGIL_API_KEY";
const API_KEY_ID = "YOUR_VIRGIL_APP_ID";
const PARSE_APP_ID = "YOUR_PARSE_APP_ID";
const PARSE_REST_API_KEY = "YOUR_PARSE_REST_API_KEY";
const generator = new JwtGenerator({
appId: APP_ID,
apiKeyId: API_KEY_ID,
apiKey: crypto.importPrivateKey(API_KEY),
accessTokenSigner: new VirgilAccessTokenSigner(crypto)
});
Parse.Cloud.define("virgil-jwt", function(request, response) {
const { sessionToken } = request.params;
return axios
.get("https://parseapi.back4app.com/users/me", {
headers: {
"X-Parse-Application-Id": PARSE_APP_ID,
"X-Parse-REST-API-Key": PARSE_REST_API_KEY,
"X-Parse-Session-Token": sessionToken
}
})
.then(resp => {
const identity = resp.data.objectId;
const virgilJwtToken = generator.generateToken(identity);
response.success({ token: virgilJwtToken.toString() });
})
.catch(error => {
response.error(error.message);
});
});
{
"dependencies": {
"axios": "^0.18.0",
"virgil-crypto": "^3.2.1",
"virgil-sdk": "^5.2.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment