diff --git a/rollup.config.js b/rollup.config.js index 59ecc85b1b9b71838f03cea796fe7e4712d96839..9dcfa435c906683065a9a2a5bf495d507358428d 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -34,6 +34,8 @@ console.log("build: " + build); let basePath = ''; let entryPointURL = ''; let nextcloudBaseURL = 'https://cloud.tugraz.at'; +let nextcloudWebAppPasswordURL = nextcloudBaseURL + '/apps/webapppassword'; +let nextcloudWebDavURL = nextcloudBaseURL + '/remote.php/dav/files'; let keyCloakServer = ''; let keyCloakBaseURL = ''; let keyCloakClientId = ''; @@ -47,7 +49,9 @@ switch (build) { case 'local': basePath = '/dist/'; entryPointURL = 'http://127.0.0.1:8000'; - nextcloudBaseURL = 'http://localhost:8081/index.php'; + nextcloudBaseURL = 'http://localhost:8081'; + nextcloudWebAppPasswordURL = nextcloudBaseURL + '/index.php/apps/webapppassword'; + nextcloudWebDavURL = nextcloudBaseURL + '/remote.php/dav/files'; keyCloakServer = 'auth-dev.tugraz.at'; keyCloakBaseURL = 'https://' + keyCloakServer + '/auth'; keyCloakClientId = 'auth-dev-mw-frontend-local'; @@ -82,6 +86,7 @@ switch (build) { basePath = '/apps/signature/'; entryPointURL = ''; nextcloudBaseURL = ''; + nextcloudWebAppPasswordURL = ''; keyCloakServer = ''; keyCloakBaseURL = ''; keyCloakClientId = ''; @@ -178,7 +183,8 @@ export default { consts({ environment: build, buildinfo: getBuildInfo(), - nextcloudBaseURL: nextcloudBaseURL, + nextcloudWebAppPasswordURL: nextcloudWebAppPasswordURL, + nextcloudWebDavURL: nextcloudWebDavURL, }), emitEJS({ src: 'assets', diff --git a/src/vpu-file-picker.js b/src/vpu-file-picker.js index 185fd503e355952e4b6089ee0eb5d736890e5a79..b193c1ec2ce8ab0849b4e357d02f033143d742df 100644 --- a/src/vpu-file-picker.js +++ b/src/vpu-file-picker.js @@ -1,13 +1,9 @@ import {createI18nInstance} from './i18n.js'; import {css, html} from 'lit-element'; -import {classMap} from 'lit-html/directives/class-map.js'; -import {live} from 'lit-html/directives/live.js'; import {ScopedElementsMixin} from '@open-wc/scoped-elements'; import VPULitElement from 'vpu-common/vpu-lit-element'; import {MiniSpinner} from 'vpu-common'; -import * as commonUtils from "vpu-common/utils"; import * as commonStyles from 'vpu-common/styles'; -import pdfjs from 'pdfjs-dist'; const i18n = createI18nInstance(); @@ -18,7 +14,8 @@ export class FilePicker extends ScopedElementsMixin(VPULitElement) { constructor() { super(); this.lang = 'de'; - this.baseUrl = ''; + this.authUrl = ''; + this.webDavUrl = ''; this.loginWindow = null; this._onReceiveWindowMessage = this.onReceiveWindowMessage.bind(this); @@ -36,7 +33,8 @@ export class FilePicker extends ScopedElementsMixin(VPULitElement) { static get properties() { return { lang: { type: String }, - baseUrl: { type: String, attribute: "base-url" }, + authUrl: { type: String, attribute: "auth-url" }, + webDavUrl: { type: String, attribute: "web-dav-url" }, }; } @@ -67,7 +65,7 @@ export class FilePicker extends ScopedElementsMixin(VPULitElement) { } openFilePicker() { - this.loginWindow = window.open(this.baseUrl + "/apps/webapppassword/#", "Nextcloud Login", + this.loginWindow = window.open(this.authUrl, "Nextcloud Login", "width=400,height=400,menubar=no,scrollbars=no,status=no,titlebar=no,toolbar=no"); } @@ -77,7 +75,34 @@ export class FilePicker extends ScopedElementsMixin(VPULitElement) { if (data.type === "webapppassword") { this.loginWindow.close(); - alert("Login name: " + data.loginName + "\nApp password: " + data.token); + // alert("Login name: " + data.loginName + "\nApp password: " + data.token); + + const apiUrl = this.webDavUrl + "/" + data.loginName; + + fetch(apiUrl, { + method: 'PROPFIND', + headers: { + 'Content-Type': 'text/xml', + 'Authorization': 'Basic ' + btoa(data.loginName + ":" + data.token), + }, + data: "<?xml version=\"1.0\"?>" + + "<a:propfind xmlns:a=\"DAV:\">" + + "<a:prop><a:resourcetype />" + + "</a:prop>" + + "</a:propfind>" + }) + .then(result => { + console.log("result", result); + + if (!result.ok) throw result; + + return result.text(); + }) + .then((xml) => { + console.log("xml", xml); + }).catch(error => { + console.error("error", error); + }); } } diff --git a/src/vpu-qualified-signature-pdf-upload.js b/src/vpu-qualified-signature-pdf-upload.js index 709b3fc5f068fad7ec2aa0792db050f038180035..29ec41d86bfaaefc61229699960da1d69f5c968e 100644 --- a/src/vpu-qualified-signature-pdf-upload.js +++ b/src/vpu-qualified-signature-pdf-upload.js @@ -14,7 +14,8 @@ import {FileUpload} from 'vpu-file-upload'; import JSONLD from "vpu-common/jsonld"; import {TextSwitch} from './textswitch.js'; import {FilePicker} from "./vpu-file-picker"; -import nextcloudBaseURL from 'consts:nextcloudBaseURL'; +import nextcloudWebAppPasswordURL from 'consts:nextcloudWebAppPasswordURL'; +import nextcloudWebDavURL from 'consts:nextcloudWebDavURL'; const i18n = createI18nInstance(); @@ -1105,7 +1106,7 @@ class QualifiedSignaturePdfUpload extends ScopedElementsMixin(VPUSignatureLitEle <vpu-mini-spinner></vpu-mini-spinner> </div> <!-- File picker test --> -<!-- <vpu-file-picker base-url="${nextcloudBaseURL}"></vpu-file-picker>--> +<!-- <vpu-file-picker lang="${this.lang}" auth-url="${nextcloudWebAppPasswordURL}" web-dav-url="${nextcloudWebDavURL}"></vpu-file-picker>--> `; } }