diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..53d1379 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.detectIndentation": true +} \ No newline at end of file diff --git a/public/dist/main.js b/public/dist/main.js index 223e407..7ca74b6 100644 --- a/public/dist/main.js +++ b/public/dist/main.js @@ -385,7 +385,7 @@ eval("var DatabusWebappUtils = __webpack_require__(/*! ../utils/databus-webapp-u \**************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -eval("const DatabusUtils = __webpack_require__(/*! ../utils/databus-utils */ \"./js/utils/databus-utils.js\");\nconst DatabusWebappUtils = __webpack_require__(/*! ../utils/databus-webapp-utils */ \"./js/utils/databus-webapp-utils.js\");\nconst DatabusAlert = __webpack_require__(/*! ../components/databus-alert/databus-alert */ \"./js/components/databus-alert/databus-alert.js\");\nconst SearchAdapter = __webpack_require__(/*! ../search/search-adapter */ \"./js/search/search-adapter.js\");\nconst DatabusMessages = __webpack_require__(/*! ../utils/databus-messages */ \"./js/utils/databus-messages.js\");\nconst DatabusConstants = __webpack_require__(/*! ../utils/databus-constants */ \"./js/utils/databus-constants.js\");\nconst AppJsonFormatter = __webpack_require__(/*! ../utils/app-json-formatter */ \"./js/utils/app-json-formatter.js\");\n\nfunction ProfileController($scope, $http) {\n\n $scope.profileData = data.profile;\n $scope.auth = data.auth;\n $scope.preferredDatabusUsername = \"\";\n $scope.apiKeys = data.auth.info.apiKeys;\n $scope.createApiKeyName = \"\"\n $scope.createAccountError = \"\";\n $scope.createApiKeyError = \"\";\n $scope.addWebIdUri = \"\";\n $scope.grantAccessUri = \"\";\n $scope.adapters = SearchAdapter.list;\n $scope.utils = new DatabusWebappUtils($scope);\n\n $scope.personUri = `${DATABUS_RESOURCE_BASE_URL}/${$scope.auth.info.accountName}${DatabusConstants.WEBID_THIS}`;\n\n $scope.putProfile = function (accountName) {\n\n var accountJsonLd = AppJsonFormatter.createAccountData(DATABUS_RESOURCE_BASE_URL, \n accountName,\n accountName, \n null, \n null);\n\n $http.post(`/api/register`, accountJsonLd).then(function (result) {\n window.location.reload(true);\n }, function (err) {\n console.log(err);\n $scope.createAccountError = err.data;\n });\n }\n\n\n if ($scope.profileData == undefined) {\n\n $scope.createProfile = function () {\n if (!$scope.auth.authenticated) {\n return;\n }\n\n var accountName = $scope.preferredDatabusUsername;\n\n if (accountName == undefined || !DatabusUtils.isValidAccountName(accountName)) {\n $scope.createAccountError = \"Enter a valid account name.\"\n $scope.showAccountNameHints = true;\n return;\n }\n\n $scope.showAccountNameHints = false;\n $scope.putProfile(accountName);\n }\n\n return;\n }\n\n $scope.removeApiKey = function (key) {\n\n $http.post(`/api/account/api-key/delete?name=${key.keyname}`).then(function (result) {\n $scope.apiKeys = $scope.apiKeys.filter(function (k) {\n return k.keyname != key.keyname;\n });\n\n }, function (err) {\n console.log(err);\n $scope.createApiKeyError = err.data;\n });\n }\n\n $scope.onCreateApiKeyNameChanged = function () {\n var hasError = !DatabusUtils.isValidResourceLabel($scope.createApiKeyName, 3, 20);\n $scope.createApiKeyError = hasError ? \" API key name must have between 3 and 20 characters and match [A-Za-z0-9\\\\s_()\\\\.\\\\,\\\\-]*\" : \"\";\n }\n\n $scope.addApiKey = function () {\n\n $http.post(`/api/account/api-key/create?name=${encodeURIComponent($scope.createApiKeyName)}`).then(function (result) {\n\n if (result.data != null) {\n $scope.apiKeys.push(result.data);\n }\n\n DatabusAlert.alert($scope, true, DatabusMessages.ACCOUNT_API_KEY_CREATED);\n\n }, function (err) {\n console.log(err);\n $scope.createApiKeyError = err.data;\n });\n\n }\n\n $scope.removeSearchExtension = function(uri) {\n $http.post(`/api/account/mods/search-extensions/remove?uri=${encodeURIComponent(uri)}`)\n .then(function (result) {\n console.log(result);\n DatabusAlert.alert($scope, true, result.data);\n\n $scope.profileData.searchExtensions = $scope.profileData.searchExtensions.filter(function (e) {\n return e.endpointUri != uri;\n });\n\n }, function (err) {\n console.log(err);\n DatabusAlert.alert($scope, false, err.data);\n });\n }\n\n $scope.addSearchExtension = function () {\n var uri = $scope.modsSettings.searchExtensionURI;\n var adapter = $scope.modsSettings.searchExtensionAdapter.name;\n\n $http.post(`/api/account/mods/search-extensions/add?uri=${encodeURIComponent(uri)}&adapter=${adapter}`)\n .then(function (result) {\n console.log(result);\n DatabusAlert.alert($scope, true, result.data);\n $scope.profileData.searchExtensions.push({\n endpointUri: uri,\n adapter: adapter\n });\n }, function (err) {\n console.log(err);\n DatabusAlert.alert($scope, false, err.data);\n });\n }\n\n $scope.grantAccess = function () {\n $http.post(`/api/account/access/grant?uri=${encodeURIComponent($scope.grantAccessUri)}`).then(function (result) {\n $scope.profileData.authorizedAccounts.push($scope.grantAccessUri);\n }, function (err) {\n console.log(err);\n $scope.grantAccessError = err.data;\n });\n }\n\n $scope.revokeAccess = function (uri) {\n $http.post(`/api/account/access/revoke?uri=${encodeURIComponent(uri)}`).then(function (result) {\n $scope.profileData.authorizedAccounts = $scope.profileData.webIds.filter(function (value, index, arr) {\n return value != uri;\n });\n }, function (err) {\n console.log(err);\n $scope.grantAccessError = err.data;\n });\n }\n\n $scope.connectWebid = function () {\n\n $http.post(`/api/account/webid/add?uri=${encodeURIComponent($scope.addWebIdUri)}`).then(function (result) {\n $scope.profileData.webIds.push($scope.addWebIdUri);\n DatabusAlert.alert($scope, true, DatabusMessages.ACCOUNT_WEBID_LINKED);\n\n }, function (err) {\n console.log(err);\n $scope.addWebIdError = err.data;\n });\n }\n\n $scope.removeWebId = function (webIdToRemove) {\n\n $http.post(`/api/account/webid/remove?uri=${encodeURIComponent(webIdToRemove)}`).then(function (result) {\n\n $scope.profileData.webIds = $scope.profileData.webIds.filter(function (value, index, arr) {\n return value != webIdToRemove;\n });\n\n }, function (err) {\n console.log(err);\n $scope.addWebIdError = err.data;\n });\n }\n\n\n $scope.saveProfile = async function () {\n\n if (!$scope.auth.authenticated) {\n return;\n }\n\n var accountJsonLd = AppJsonFormatter.createAccountData(DATABUS_RESOURCE_BASE_URL, \n $scope.auth.info.accountName,\n $scope.editData.label, \n $scope.editData.about, \n $scope.editData.imageUrl);\n\n $http.post(`/api/register`, accountJsonLd).then(function (result) {\n DatabusAlert.alert($scope, true, DatabusMessages.ACCOUT_PROFILE_SAVED);\n }, function (err) {\n console.log(err);\n });\n }\n\n // We have profile data in $scope.profileData!\n\n if (!$scope.profileData.isOwn) {\n return;\n }\n\n $scope.modsSettings = {}\n $scope.modsSettings.searchExtensionURI = \"\";\n $scope.modsSettings.searchExtensionAdapter = $scope.adapters[0];\n\n\n $scope.editData = DatabusUtils.createCleanCopy($scope.profileData);\n\n $scope.resetEdits = function () {\n $scope.editData = DatabusUtils.createCleanCopy($scope.profileData);\n }\n\n}\n\nmodule.exports = ProfileController;\n\n//# sourceURL=webpack://databus-webapp/./js/page-controller/profile-controller.js?"); +eval("const DatabusUtils = __webpack_require__(/*! ../utils/databus-utils */ \"./js/utils/databus-utils.js\");\nconst DatabusWebappUtils = __webpack_require__(/*! ../utils/databus-webapp-utils */ \"./js/utils/databus-webapp-utils.js\");\nconst DatabusAlert = __webpack_require__(/*! ../components/databus-alert/databus-alert */ \"./js/components/databus-alert/databus-alert.js\");\nconst SearchAdapter = __webpack_require__(/*! ../search/search-adapter */ \"./js/search/search-adapter.js\");\nconst DatabusMessages = __webpack_require__(/*! ../utils/databus-messages */ \"./js/utils/databus-messages.js\");\nconst DatabusConstants = __webpack_require__(/*! ../utils/databus-constants */ \"./js/utils/databus-constants.js\");\nconst AppJsonFormatter = __webpack_require__(/*! ../utils/app-json-formatter */ \"./js/utils/app-json-formatter.js\");\n\nfunction ProfileController($scope, $http) {\n\n $scope.profileData = data.profile;\n $scope.auth = data.auth;\n $scope.preferredDatabusUsername = \"\";\n $scope.apiKeys = data.auth.info.apiKeys;\n $scope.createApiKeyName = \"\"\n $scope.createAccountError = \"\";\n $scope.createApiKeyError = \"\";\n $scope.addWebIdUri = \"\";\n $scope.grantAccessUri = \"\";\n $scope.adapters = SearchAdapter.list;\n $scope.utils = new DatabusWebappUtils($scope);\n\n $scope.personUri = `${DATABUS_RESOURCE_BASE_URL}/${$scope.auth.info.accountName}${DatabusConstants.WEBID_THIS}`;\n\n $scope.putProfile = function (accountName) {\n\n var accountUri = `${DATABUS_RESOURCE_BASE_URL}/${accountName}`;\n var accountJsonLd = AppJsonFormatter.createAccountData(\n accountUri,\n accountName, \n null, \n null);\n\n $http.post(`/api/register`, accountJsonLd).then(function (result) {\n window.location.reload(true);\n }, function (err) {\n console.log(err);\n $scope.createAccountError = err.data;\n });\n }\n\n\n if ($scope.profileData == undefined) {\n\n $scope.createProfile = function () {\n if (!$scope.auth.authenticated) {\n return;\n }\n\n var accountName = $scope.preferredDatabusUsername;\n\n if (accountName == undefined || !DatabusUtils.isValidAccountName(accountName)) {\n $scope.createAccountError = \"Enter a valid account name.\"\n $scope.showAccountNameHints = true;\n return;\n }\n\n $scope.showAccountNameHints = false;\n $scope.putProfile(accountName);\n }\n\n return;\n }\n\n $scope.removeApiKey = function (key) {\n\n $http.post(`/api/account/api-key/delete?name=${key.keyname}`).then(function (result) {\n $scope.apiKeys = $scope.apiKeys.filter(function (k) {\n return k.keyname != key.keyname;\n });\n\n }, function (err) {\n console.log(err);\n $scope.createApiKeyError = err.data;\n });\n }\n\n $scope.onCreateApiKeyNameChanged = function () {\n var hasError = !DatabusUtils.isValidResourceLabel($scope.createApiKeyName, 3, 20);\n $scope.createApiKeyError = hasError ? \" API key name must have between 3 and 20 characters and match [A-Za-z0-9\\\\s_()\\\\.\\\\,\\\\-]*\" : \"\";\n }\n\n $scope.addApiKey = function () {\n\n $http.post(`/api/account/api-key/create?name=${encodeURIComponent($scope.createApiKeyName)}`).then(function (result) {\n\n if (result.data != null) {\n $scope.apiKeys.push(result.data);\n }\n\n DatabusAlert.alert($scope, true, DatabusMessages.ACCOUNT_API_KEY_CREATED);\n\n }, function (err) {\n console.log(err);\n $scope.createApiKeyError = err.data;\n });\n\n }\n\n $scope.removeSearchExtension = function(uri) {\n $http.post(`/api/account/mods/search-extensions/remove?uri=${encodeURIComponent(uri)}`)\n .then(function (result) {\n console.log(result);\n DatabusAlert.alert($scope, true, result.data);\n\n $scope.profileData.searchExtensions = $scope.profileData.searchExtensions.filter(function (e) {\n return e.endpointUri != uri;\n });\n\n }, function (err) {\n console.log(err);\n DatabusAlert.alert($scope, false, err.data);\n });\n }\n\n $scope.addSearchExtension = function () {\n var uri = $scope.modsSettings.searchExtensionURI;\n var adapter = $scope.modsSettings.searchExtensionAdapter.name;\n\n $http.post(`/api/account/mods/search-extensions/add?uri=${encodeURIComponent(uri)}&adapter=${adapter}`)\n .then(function (result) {\n console.log(result);\n DatabusAlert.alert($scope, true, result.data);\n $scope.profileData.searchExtensions.push({\n endpointUri: uri,\n adapter: adapter\n });\n }, function (err) {\n console.log(err);\n DatabusAlert.alert($scope, false, err.data);\n });\n }\n\n $scope.grantAccess = function () {\n $http.post(`/api/account/access/grant?uri=${encodeURIComponent($scope.grantAccessUri)}`).then(function (result) {\n $scope.profileData.authorizedAccounts.push($scope.grantAccessUri);\n }, function (err) {\n console.log(err);\n $scope.grantAccessError = err.data;\n });\n }\n\n $scope.revokeAccess = function (uri) {\n $http.post(`/api/account/access/revoke?uri=${encodeURIComponent(uri)}`).then(function (result) {\n $scope.profileData.authorizedAccounts = $scope.profileData.webIds.filter(function (value, index, arr) {\n return value != uri;\n });\n }, function (err) {\n console.log(err);\n $scope.grantAccessError = err.data;\n });\n }\n\n $scope.connectWebid = function () {\n\n $http.post(`/api/account/webid/add?uri=${encodeURIComponent($scope.addWebIdUri)}`).then(function (result) {\n $scope.profileData.webIds.push($scope.addWebIdUri);\n DatabusAlert.alert($scope, true, DatabusMessages.ACCOUNT_WEBID_LINKED);\n\n }, function (err) {\n console.log(err);\n $scope.addWebIdError = err.data;\n });\n }\n\n $scope.removeWebId = function (webIdToRemove) {\n\n $http.post(`/api/account/webid/remove?uri=${encodeURIComponent(webIdToRemove)}`).then(function (result) {\n\n $scope.profileData.webIds = $scope.profileData.webIds.filter(function (value, index, arr) {\n return value != webIdToRemove;\n });\n\n }, function (err) {\n console.log(err);\n $scope.addWebIdError = err.data;\n });\n }\n\n\n $scope.saveProfile = async function () {\n\n if (!$scope.auth.authenticated) {\n return;\n }\n\n var accountUri = `${DATABUS_RESOURCE_BASE_URL}/${$scope.auth.info.accountName}`;\n var accountJsonLd = AppJsonFormatter.createAccountData(\n accountUri,\n $scope.editData.label, \n $scope.editData.about, \n $scope.editData.imageUrl);\n\n $http.post(`/api/register`, accountJsonLd).then(function (result) {\n DatabusAlert.alert($scope, true, DatabusMessages.ACCOUT_PROFILE_SAVED);\n }, function (err) {\n console.log(err);\n });\n }\n\n // We have profile data in $scope.profileData!\n\n if (!$scope.profileData.isOwn) {\n return;\n }\n\n $scope.modsSettings = {}\n $scope.modsSettings.searchExtensionURI = \"\";\n $scope.modsSettings.searchExtensionAdapter = $scope.adapters[0];\n\n\n $scope.editData = DatabusUtils.createCleanCopy($scope.profileData);\n\n $scope.resetEdits = function () {\n $scope.editData = DatabusUtils.createCleanCopy($scope.profileData);\n }\n\n}\n\nmodule.exports = ProfileController;\n\n//# sourceURL=webpack://databus-webapp/./js/page-controller/profile-controller.js?"); /***/ }), @@ -505,7 +505,7 @@ eval("const AppJsonFormatter = __webpack_require__(/*! ../utils/app-json-formatt \****************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -eval("const DatabusConstants = __webpack_require__(/*! ./databus-constants */ \"./js/utils/databus-constants.js\");\nconst DatabusUris = __webpack_require__(/*! ./databus-uris */ \"./js/utils/databus-uris.js\");\nconst DatabusUtils = __webpack_require__(/*! ./databus-utils */ \"./js/utils/databus-utils.js\");\nconst JsonldUtils = __webpack_require__(/*! ./jsonld-utils */ \"./js/utils/jsonld-utils.js\");\n\n/**\n * Translates expanded jsonld into web-app compatible json\n */\nclass AppJsonFormatter {\n\n static createAccountData(resourceBaseUrl, accountName, accountLabel, accountStatus, accountImage) {\n\n var accountUri = `${resourceBaseUrl}/${accountName}`;\n var personUri = `${resourceBaseUrl}/${accountName}${DatabusConstants.WEBID_THIS}`;\n\n var accountJsonLd = {};\n\n var accountGraph = {};\n accountGraph[DatabusUris.JSONLD_ID] = accountUri;\n accountGraph[DatabusUris.JSONLD_TYPE] = DatabusUris.DATABUS_ACCOUNT;\n\n var personGraph = {};\n personGraph[DatabusUris.JSONLD_ID] = personUri;\n personGraph[DatabusUris.JSONLD_TYPE] = DatabusUris.FOAF_PERSON;\n personGraph[DatabusUris.FOAF_NAME] = accountLabel;\n personGraph[DatabusUris.FOAF_ACCOUNT] = JsonldUtils.refTo(accountUri);\n\n if (accountStatus != null) {\n personGraph[DatabusUris.FOAF_STATUS] = accountStatus;\n }\n\n if (accountImage != null) {\n personGraph[DatabusUris.FOAF_IMG] = JsonldUtils.refTo(accountImage);\n }\n\n\n accountJsonLd[DatabusUris.JSONLD_GRAPH] = [\n accountGraph,\n personGraph\n ];\n\n return accountJsonLd;\n }\n\n static formatGroupData(graphs) {\n var result = {};\n\n // ?uri ?title ?abstract ?description\n var groupGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.DATABUS_GROUP);\n\n result.uri = groupGraph[DatabusUris.JSONLD_ID];\n result.title = JsonldUtils.getProperty(groupGraph, DatabusUris.DCT_TITLE);\n result.abstract = JsonldUtils.getProperty(groupGraph, DatabusUris.DCT_ABSTRACT);\n result.description = JsonldUtils.getProperty(groupGraph, DatabusUris.DCT_DESCRIPTION);\n result.name = DatabusUtils.uriToResourceName(result.uri);\n return result;\n }\n\n static formatArtifactData(graphs) {\n var result = {};\n // ?uri ?title ?abstract ?description\n var artifactGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.DATABUS_ARTIFACT);\n\n result.uri = artifactGraph[DatabusUris.JSONLD_ID];\n result.title = JsonldUtils.getProperty(artifactGraph, DatabusUris.DCT_TITLE);\n result.abstract = JsonldUtils.getProperty(artifactGraph, DatabusUris.DCT_ABSTRACT);\n result.description = JsonldUtils.getProperty(artifactGraph, DatabusUris.DCT_DESCRIPTION);\n result.name = DatabusUtils.uriToResourceName(result.uri);\n return result;\n\n\n }\n\n static formatAccountData(graphs) {\n var result = {};\n\n var profileGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.FOAF_PERSONAL_PROFILE_DOCUMENT);\n var personGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.FOAF_PERSON);\n\n result.uri = profileGraph[DatabusUris.JSONLD_ID];\n result.accountName = DatabusUtils.uriToResourceName(result.uri);\n result.label = JsonldUtils.getProperty(personGraph, DatabusUris.FOAF_NAME);\n result.webIds = [];\n result.searchExtensions = [];\n\n var extensionGraphs = JsonldUtils.getTypedGraphs(graphs, DatabusUris.DATABUS_SEARCH_EXTENSION);\n\n for (var extensionGraph of extensionGraphs) {\n result.searchExtensions.push({\n endpointUri: JsonldUtils.getProperty(extensionGraph, DatabusUris.DATABUS_SEARCH_EXTENSION_ENDPOINT),\n adapterName: JsonldUtils.getProperty(extensionGraph, DatabusUris.DATABUS_SEARCH_EXTENSION_ADAPTER),\n });\n }\n\n for (var graph of graphs) {\n\n if (graph[DatabusUris.JSONLD_ID] == personGraph[DatabusUris.JSONLD_ID]) {\n continue;\n }\n\n if (graph[DatabusUris.FOAF_ACCOUNT] != undefined) {\n result.webIds.push(graph[DatabusUris.JSONLD_ID]);\n }\n }\n\n return result;\n }\n\n static formatVersionData(versionGraph) {\n\n\n var version = {};\n version.uri = versionGraph[DatabusUris.JSONLD_ID];\n version.title = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_TITLE);\n version.abstract = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_ABSTRACT);\n version.description = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_DESCRIPTION);\n version.artifact = JsonldUtils.getProperty(versionGraph, DatabusUris.DATABUS_ARTIFACT_PROPERTY);\n version.license = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_LICENSE);\n version.attribution = JsonldUtils.getProperty(versionGraph, DatabusUris.DATABUS_ATTRIBUTION);\n version.wasDerivedFrom = JsonldUtils.getProperty(versionGraph, DatabusUris.PROV_WAS_DERIVED_FROM);\n version.issued = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_ISSUED);\n version.name = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_HAS_VERSION);\n\n return version;\n }\n\n static formatCollectionData(graphs) {\n var collectionGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.DATABUS_COLLECTION);\n\n var result = {};\n\n result.uri = collectionGraph[DatabusUris.JSONLD_ID];\n result.title = JsonldUtils.getProperty(collectionGraph, DatabusUris.DCT_TITLE);\n result.abstract = JsonldUtils.getProperty(collectionGraph, DatabusUris.DCT_ABSTRACT);\n result.description = JsonldUtils.getProperty(collectionGraph, DatabusUris.DCT_DESCRIPTION);\n result.issued = JsonldUtils.getProperty(collectionGraph, DatabusUris.DCT_ISSUED);\n result.publisher = JsonldUtils.getProperty(collectionGraph, DatabusUris.DCT_PUBLISHER);\n\n var content = JsonldUtils.getProperty(collectionGraph, DatabusUris.DATABUS_COLLECTION_CONTENT)\n result.content = DatabusUtils.tryParseJson(unescape(content));\n\n return result;\n }\n}\n\nmodule.exports = AppJsonFormatter;\n\n\n//# sourceURL=webpack://databus-webapp/./js/utils/app-json-formatter.js?"); +eval("const DatabusConstants = __webpack_require__(/*! ./databus-constants */ \"./js/utils/databus-constants.js\");\nconst DatabusUris = __webpack_require__(/*! ./databus-uris */ \"./js/utils/databus-uris.js\");\nconst DatabusUtils = __webpack_require__(/*! ./databus-utils */ \"./js/utils/databus-utils.js\");\nconst JsonldUtils = __webpack_require__(/*! ./jsonld-utils */ \"./js/utils/jsonld-utils.js\");\n\n/**\n * Translates expanded jsonld into web-app compatible json\n */\nclass AppJsonFormatter {\n\n static createAccountData(accountUri, accountLabel, accountStatus, accountImage) {\n\n var personUri = `${accountUri}${DatabusConstants.WEBID_THIS}`;\n\n var accountJsonLd = {};\n\n var accountGraph = {};\n accountGraph[DatabusUris.JSONLD_ID] = accountUri;\n accountGraph[DatabusUris.JSONLD_TYPE] = DatabusUris.DATABUS_ACCOUNT;\n\n var personGraph = {};\n personGraph[DatabusUris.JSONLD_ID] = personUri;\n personGraph[DatabusUris.JSONLD_TYPE] = DatabusUris.FOAF_PERSON;\n personGraph[DatabusUris.FOAF_NAME] = accountLabel;\n personGraph[DatabusUris.FOAF_ACCOUNT] = JsonldUtils.refTo(accountUri);\n\n if (accountStatus != null) {\n personGraph[DatabusUris.FOAF_STATUS] = accountStatus;\n }\n\n if (accountImage != null) {\n personGraph[DatabusUris.FOAF_IMG] = JsonldUtils.refTo(accountImage);\n }\n\n\n accountJsonLd[DatabusUris.JSONLD_GRAPH] = [\n accountGraph,\n personGraph\n ];\n\n return accountJsonLd;\n }\n\n static formatGroupData(graphs) {\n var result = {};\n\n // ?uri ?title ?abstract ?description\n var groupGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.DATABUS_GROUP);\n\n result.uri = groupGraph[DatabusUris.JSONLD_ID];\n result.title = JsonldUtils.getProperty(groupGraph, DatabusUris.DCT_TITLE);\n result.abstract = JsonldUtils.getProperty(groupGraph, DatabusUris.DCT_ABSTRACT);\n result.description = JsonldUtils.getProperty(groupGraph, DatabusUris.DCT_DESCRIPTION);\n result.name = DatabusUtils.uriToResourceName(result.uri);\n return result;\n }\n\n static formatArtifactData(graphs) {\n var result = {};\n // ?uri ?title ?abstract ?description\n var artifactGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.DATABUS_ARTIFACT);\n\n result.uri = artifactGraph[DatabusUris.JSONLD_ID];\n result.title = JsonldUtils.getProperty(artifactGraph, DatabusUris.DCT_TITLE);\n result.abstract = JsonldUtils.getProperty(artifactGraph, DatabusUris.DCT_ABSTRACT);\n result.description = JsonldUtils.getProperty(artifactGraph, DatabusUris.DCT_DESCRIPTION);\n result.name = DatabusUtils.uriToResourceName(result.uri);\n return result;\n\n\n }\n\n static formatAccountData(graphs) {\n var result = {};\n\n var profileGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.FOAF_PERSONAL_PROFILE_DOCUMENT);\n var personGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.FOAF_PERSON);\n\n result.uri = profileGraph[DatabusUris.JSONLD_ID];\n result.accountName = DatabusUtils.uriToResourceName(result.uri);\n result.label = JsonldUtils.getProperty(personGraph, DatabusUris.FOAF_NAME);\n result.webIds = [];\n result.searchExtensions = [];\n\n var extensionGraphs = JsonldUtils.getTypedGraphs(graphs, DatabusUris.DATABUS_SEARCH_EXTENSION);\n\n for (var extensionGraph of extensionGraphs) {\n result.searchExtensions.push({\n endpointUri: JsonldUtils.getProperty(extensionGraph, DatabusUris.DATABUS_SEARCH_EXTENSION_ENDPOINT),\n adapterName: JsonldUtils.getProperty(extensionGraph, DatabusUris.DATABUS_SEARCH_EXTENSION_ADAPTER),\n });\n }\n\n for (var graph of graphs) {\n\n if (graph[DatabusUris.JSONLD_ID] == personGraph[DatabusUris.JSONLD_ID]) {\n continue;\n }\n\n if (graph[DatabusUris.FOAF_ACCOUNT] != undefined) {\n result.webIds.push(graph[DatabusUris.JSONLD_ID]);\n }\n }\n\n return result;\n }\n\n static formatVersionData(versionGraph) {\n\n\n var version = {};\n version.uri = versionGraph[DatabusUris.JSONLD_ID];\n version.title = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_TITLE);\n version.abstract = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_ABSTRACT);\n version.description = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_DESCRIPTION);\n version.artifact = JsonldUtils.getProperty(versionGraph, DatabusUris.DATABUS_ARTIFACT_PROPERTY);\n version.license = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_LICENSE);\n version.attribution = JsonldUtils.getProperty(versionGraph, DatabusUris.DATABUS_ATTRIBUTION);\n version.wasDerivedFrom = JsonldUtils.getProperty(versionGraph, DatabusUris.PROV_WAS_DERIVED_FROM);\n version.issued = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_ISSUED);\n version.name = JsonldUtils.getProperty(versionGraph, DatabusUris.DCT_HAS_VERSION);\n\n return version;\n }\n\n static formatCollectionData(graphs) {\n var collectionGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.DATABUS_COLLECTION);\n\n var result = {};\n\n result.uri = collectionGraph[DatabusUris.JSONLD_ID];\n result.title = JsonldUtils.getProperty(collectionGraph, DatabusUris.DCT_TITLE);\n result.abstract = JsonldUtils.getProperty(collectionGraph, DatabusUris.DCT_ABSTRACT);\n result.description = JsonldUtils.getProperty(collectionGraph, DatabusUris.DCT_DESCRIPTION);\n result.issued = JsonldUtils.getProperty(collectionGraph, DatabusUris.DCT_ISSUED);\n result.publisher = JsonldUtils.getProperty(collectionGraph, DatabusUris.DCT_PUBLISHER);\n\n var content = JsonldUtils.getProperty(collectionGraph, DatabusUris.DATABUS_COLLECTION_CONTENT)\n result.content = DatabusUtils.tryParseJson(unescape(content));\n\n return result;\n }\n}\n\nmodule.exports = AppJsonFormatter;\n\n\n//# sourceURL=webpack://databus-webapp/./js/utils/app-json-formatter.js?"); /***/ }), diff --git a/public/js/page-controller/profile-controller.js b/public/js/page-controller/profile-controller.js index 4007b7c..bc924a7 100644 --- a/public/js/page-controller/profile-controller.js +++ b/public/js/page-controller/profile-controller.js @@ -24,8 +24,9 @@ function ProfileController($scope, $http) { $scope.putProfile = function (accountName) { - var accountJsonLd = AppJsonFormatter.createAccountData(DATABUS_RESOURCE_BASE_URL, - accountName, + var accountUri = `${DATABUS_RESOURCE_BASE_URL}/${accountName}`; + var accountJsonLd = AppJsonFormatter.createAccountData( + accountUri, accountName, null, null); @@ -183,8 +184,9 @@ function ProfileController($scope, $http) { return; } - var accountJsonLd = AppJsonFormatter.createAccountData(DATABUS_RESOURCE_BASE_URL, - $scope.auth.info.accountName, + var accountUri = `${DATABUS_RESOURCE_BASE_URL}/${$scope.auth.info.accountName}`; + var accountJsonLd = AppJsonFormatter.createAccountData( + accountUri, $scope.editData.label, $scope.editData.about, $scope.editData.imageUrl); diff --git a/public/js/utils/app-json-formatter.js b/public/js/utils/app-json-formatter.js index ab47ba1..e164662 100644 --- a/public/js/utils/app-json-formatter.js +++ b/public/js/utils/app-json-formatter.js @@ -8,10 +8,9 @@ const JsonldUtils = require("./jsonld-utils"); */ class AppJsonFormatter { - static createAccountData(resourceBaseUrl, accountName, accountLabel, accountStatus, accountImage) { + static createAccountData(accountUri, accountLabel, accountStatus, accountImage) { - var accountUri = `${resourceBaseUrl}/${accountName}`; - var personUri = `${resourceBaseUrl}/${accountName}${DatabusConstants.WEBID_THIS}`; + var personUri = `${accountUri}${DatabusConstants.WEBID_THIS}`; var accountJsonLd = {}; @@ -34,12 +33,10 @@ class AppJsonFormatter { } - accountJsonLd[DatabusUris.JSONLD_GRAPH] = [ + return [ accountGraph, personGraph ]; - - return accountJsonLd; } static formatGroupData(graphs) { @@ -74,12 +71,13 @@ class AppJsonFormatter { static formatAccountData(graphs) { var result = {}; - var profileGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.FOAF_PERSONAL_PROFILE_DOCUMENT); + var accountGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.DATABUS_ACCOUNT); var personGraph = JsonldUtils.getTypedGraph(graphs, DatabusUris.FOAF_PERSON); - result.uri = profileGraph[DatabusUris.JSONLD_ID]; + result.uri = accountGraph[DatabusUris.JSONLD_ID]; result.accountName = DatabusUtils.uriToResourceName(result.uri); result.label = JsonldUtils.getProperty(personGraph, DatabusUris.FOAF_NAME); + result.about = JsonldUtils.getProperty(personGraph, DatabusUris.FOAF_STATUS); result.webIds = []; result.searchExtensions = []; diff --git a/public/js/utils/databus-utils.js b/public/js/utils/databus-utils.js index 9e93fd0..da0a134 100644 --- a/public/js/utils/databus-utils.js +++ b/public/js/utils/databus-utils.js @@ -503,19 +503,6 @@ class DatabusUtils { return errorList; } - static validateNamespace(uri, accountName) { - - var baseURL = process.env.DATABUS_RESOURCE_BASE_URL; - - if (!uri.startsWith(process.env.DATABUS_RESOURCE_BASE_URL)) { - throw new ApiError(`Identifier <${uri}> does not start with the resource base url <${baseURL}> of this Databus.`, 400); - } - - var namespacePrefix = `${baseURL}/${accountName}/`; - if (!uri.startsWith(namespacePrefix)) { - throw new ApiError(`Identifier <${uri}> does not start with the expected namespace prefix <${namespacePrefix}>.`, 403); - } - } } module.exports = DatabusUtils; diff --git a/public/js/utils/jsonld-utils.js b/public/js/utils/jsonld-utils.js index abd341e..b2d7435 100644 --- a/public/js/utils/jsonld-utils.js +++ b/public/js/utils/jsonld-utils.js @@ -8,7 +8,7 @@ class JsonldUtils { result[DatabusUris.JSONLD_ID] = uri; return result; } - + static getTypedGraph(graphs, graphType) { for (var g in graphs) { @@ -139,14 +139,27 @@ class JsonldUtils { return obj[0]; } - static getFirstObjectUri(graph, key) { - var obj = graph[key]; + static getFirstObjectUri(graph, property) { + // Get the object + const obj = graph[property]; - if (obj == undefined || obj.length < 1) { + // Not found -> null + if (!obj) { return null; } + + // If it is an array... + if (Array.isArray(obj)) { + for (const item of obj) { + if (item && typeof item === 'object' && DatabusUris.JSONLD_ID in item) { + return item[DatabusUris.JSONLD_ID]; + } + } + } else if (typeof obj === 'object' && DatabusUris.JSONLD_ID in obj) { + return obj[DatabusUris.JSONLD_ID]; + } - return obj[0][DatabusUris.JSONLD_ID]; + return null; } } diff --git a/public/templates/404.ejs b/public/templates/404.ejs index 1a95972..807ba4b 100644 --- a/public/templates/404.ejs +++ b/public/templates/404.ejs @@ -1,6 +1,6 @@ <%- include('header') -%>