forked from jsnbuchanan/crowd-funder-for-time-pwa
New Project
This commit is contained in:
@@ -4,6 +4,6 @@
|
|||||||
export enum AppString {
|
export enum AppString {
|
||||||
APP_NAME = "Kickstart for time",
|
APP_NAME = "Kickstart for time",
|
||||||
VERSION = "0.1",
|
VERSION = "0.1",
|
||||||
DEFAULT_ENDORSER_API_SERVER = 'https://endorser.ch:3000',
|
DEFAULT_ENDORSER_API_SERVER = 'https://test.endorser.ch:8000',
|
||||||
DEFAULT_ENDORSER_VIEW_SERVER = 'https://endorser.ch'
|
DEFAULT_ENDORSER_VIEW_SERVER = 'https://test.endorser.ch'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,3 +100,14 @@ export const accessToken = async (identifier: IIdentifier) => {
|
|||||||
});
|
});
|
||||||
return jwt;
|
return jwt;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const sign = async (privateKeyHex: string) => {
|
||||||
|
const input = privateKeyHex.startsWith("0x")
|
||||||
|
? privateKeyHex.substring(2)
|
||||||
|
: privateKeyHex;
|
||||||
|
const privateKeyBytes = u8a.fromString(input.toLowerCase(), "base16");
|
||||||
|
|
||||||
|
const signer = didJwt.ES256KSigner(privateKeyBytes, true);
|
||||||
|
|
||||||
|
return signer;
|
||||||
|
};
|
||||||
@@ -74,7 +74,8 @@
|
|||||||
import { Options, Vue } from "vue-class-component";
|
import { Options, Vue } from "vue-class-component";
|
||||||
import { AppString } from "@/constants/app";
|
import { AppString } from "@/constants/app";
|
||||||
import { db } from "../db";
|
import { db } from "../db";
|
||||||
import { accessToken } from "@/libs/crypto";
|
import { accessToken, sign } from "@/libs/crypto";
|
||||||
|
import * as didJwt from 'did-jwt'
|
||||||
|
|
||||||
@Options({
|
@Options({
|
||||||
components: {},
|
components: {},
|
||||||
@@ -95,20 +96,31 @@ export default class NewEditProjectView extends Vue {
|
|||||||
const address = identity.did;
|
const address = identity.did;
|
||||||
const vcClaim = {
|
const vcClaim = {
|
||||||
"@context": "https://schema.org",
|
"@context": "https://schema.org",
|
||||||
"@type": "Plan",
|
"@type": "PlanAction",
|
||||||
identifier: address,
|
identifier: address,
|
||||||
name: this.projectName,
|
name: this.projectName,
|
||||||
description: this.description,
|
description: this.description,
|
||||||
};
|
};
|
||||||
const jwt = "";
|
const vcPayload = {
|
||||||
const payload = JSON.stringify({ jwtEncoded: jwt});
|
sub: "PlanAction",
|
||||||
|
vc: {
|
||||||
|
'@context': ['https://www.w3.org/2018/credentials/v1'],
|
||||||
|
type: ['VerifiableCredential'],
|
||||||
|
credentialSubject: vcClaim,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const signer = await sign(identity.keys[0].privateKeyHex);
|
||||||
|
const alg = undefined;
|
||||||
|
const vcJwt: string = await didJwt.createJWT(vcClaim,{ alg, issuer: identity, signer });
|
||||||
|
|
||||||
|
const payload = JSON.stringify({ jwtEncoded: vcJwt});
|
||||||
const endorserApiServer = AppString.DEFAULT_ENDORSER_API_SERVER;
|
const endorserApiServer = AppString.DEFAULT_ENDORSER_API_SERVER;
|
||||||
const url = endorserApiServer + "/api/claim";
|
const url = endorserApiServer + "/api/claim";
|
||||||
const token = await accessToken(identity)
|
const token = await accessToken(identity);
|
||||||
const headers = {
|
const headers = {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'Uport-Push-Token': token
|
'Authorization': "Bearer " + token
|
||||||
}
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let resp = await this.axios.post(url, payload, { headers });
|
let resp = await this.axios.post(url, payload, { headers });
|
||||||
|
|||||||
Reference in New Issue
Block a user