New version for KC 16.1.0 version and themes added into JAR (starting as *DISABLED*)

This commit is contained in:
Mauro Mugnaini 2022-02-08 11:52:31 +01:00
parent 35ab12c724
commit cd3e7b0674
154 changed files with 3532 additions and 17 deletions

View File

@ -63,7 +63,7 @@ public class DeleteAccountResource {
}
logger.debug("Finding user model and setting it as not enabled in realm");
session.users().getUserById(user.getId(), realm).setEnabled(false);
session.users().getUserById(realm, user.getId()).setEnabled(false);
if (session.getTransactionManager().isActive()) {
logger.debug("Committing the transaction on transaction manager");

View File

@ -86,7 +86,7 @@ public class KeycloakEvent extends Event {
}
private static OffsetDateTime convertEventDate(long millis) {
OrchestratorEventPublisherProvider.logger.infof("Creating offset date time from millis: %l", millis);
OrchestratorEventPublisherProvider.logger.debugf("Creating offset date time from millis %d -> %t", millis, millis);
return Instant.ofEpochMilli(millis).atZone(ZoneOffset.systemDefault()).toOffsetDateTime();
}

View File

@ -124,7 +124,7 @@ public class OrchestratorEventPublisherProviderFactory implements EventListenerP
logger.trace("Not found.");
}
}
logger.debugf("Client '%f' found", clientId);
logger.debugf("Client '%s' found", clientId);
return client;
}

View File

@ -51,6 +51,13 @@
<artifactId>identity-provider-mapper</artifactId>
<version>${project.version}</version>
</dependency>
<!--
<dependency>
<groupId>org.gcube.iam</groupId>
<artifactId>keycloak-d4science-theme</artifactId>
<version>${project.version}</version>
</dependency>
-->
<dependency>
<groupId>org.gcube.iam</groupId>
<artifactId>ldap-storage-mapper</artifactId>
@ -109,6 +116,15 @@
<bundleFileName>identity-provider-mapper.jar</bundleFileName>
<bundleDir>/</bundleDir>
</jarModule>
<!--
<jarModule>
<groupId>org.gcube.iam</groupId>
<artifactId>keycloak-d4science-theme</artifactId>
<includeInApplicationXml>true</includeInApplicationXml>
<bundleFileName>keycloak-d4science-theme.jar</bundleFileName>
<bundleDir>/</bundleDir>
</jarModule>
-->
<jarModule>
<groupId>org.gcube.iam</groupId>
<artifactId>ldap-storage-mapper</artifactId>

View File

@ -70,6 +70,11 @@
<module name="org.slf4j" />
</dependencies>
</sub-deployment>
<!-- <sub-deployment name="keycloak-d4science-theme.jar"> -->
<!-- <dependencies> -->
<!-- <module name="org.keycloak.keycloak-core" /> -->
<!-- </dependencies> -->
<!-- </sub-deployment> -->
<sub-deployment name="ldap-storage-mapper.jar">
<dependencies>
<module name="org.keycloak.keycloak-core" />

View File

@ -2,5 +2,5 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
# Changelog for "keycloak-d4science-theme"
## [Unreleased]
## [v2.0.0-SNAPSHOT]

View File

@ -1,10 +1,12 @@
# Keycloak D4Science Theme
**Keycloak D4Science Theme**
**Keycloak D4Science Theme** repository collects the implementations of base D4Science theme and a set of specific per gateway themes implementations.
Each Keycloak theme is made of a set of [Freemarker](https://freemarker.apache.org/) templates.
## Structure of the project
The theme source is contained in `src/main/resources` folder.
The themes sources are contained in `src/main/resources` folder.
## Built With
@ -16,14 +18,20 @@ To build the theme JAR it is sufficient to type
mvn clean package
For details see [Theme section](https://www.keycloak.org/docs/latest/server_development/#_themes) of Keycloak developer docs.
As specified in [Deploying Themes](https://www.keycloak.org/docs/latest/server_development/#deploying-themes) section of the documentation, *themes can be deployed to Keycloak by copying the theme directory to themes or it can be deployed as an archive.*
During the development phase, themes caching in Keycloak configuration file has to be disabled. To do this edit `standalone.xml`. For `theme` set `staticMaxAge` to `-1` and both `cacheTemplates` and `cacheThemes` to `false`.
## Change log
See [CHANGELOG.md](CHANGELOG.md).
## Authors
* **Mauro Mugnaini** ([Nubisware S.r.l.](http://www.nubisware.com))
* **Vincenzo Cestone** ([Nubisware S.r.l.](http://www.nubisware.com))
* **Vincenzo Cestone** ([Nubisware S.r.l.](http://www.nubisware.com)) for themes preparing/testing.
* **Mauro Mugnaini** ([Nubisware S.r.l.](http://www.nubisware.com)) for archive building/maven automation.
## How to Cite this Software
[Intentionally left blank]

View File

@ -1,10 +1,229 @@
{
"themes": [
{
"name": "d4science",
"types": [
"account"
]
}
]
"themes": [
{
"name": "aginfra.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "ariadne.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "bluecloud",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "blue-cloud.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "d4science",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "dante.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "desira.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "dev4.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "eosc-pillar.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "eoscsecretariat.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "example_theme",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "gemex.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "i-gene.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "i-marine.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "moving.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "next.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "openaire-connect.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "parthenos.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "performfish.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "risis2.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "secomlab.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "services.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "sobigdata.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "territoriaperti.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
},
{
"name": "test-theme.d4science.org",
"types": [
"account",
"admin",
"email",
"login"
]
}
]
}

View File

@ -0,0 +1,52 @@
#parent= the parent then defaults to d4science
#titleTag= the page title is mandatory
#favicon= absolute url to favicon defaults to https://services.d4science.org/favicon.ico
#contentBgImg= relative path to bg image defaults to img/color-triangles.png
#contentStyle= define custom styles. Note: use this for overriding BG image when pointing to external resource such as background: url("https://url-of-background-img"i no-repeat center center fixed); background-size: cover;
#logoHeaderStyle= custom style for logoHeader defaults to display: flex; justify-content: space-between; width: 100%;
#logoSrc= url for logo image is mandatory
#logoAlt= alt text for logo gCubeDev Gateway
#logoStyle= custom style for logo defautls to height: 60px;
#infrastructureLogo= yes (default) if "powered for d4science has to be included". no otherwise
#infrastructureLogoStyle= custom style for infrastructureLogo defaults to height: 40px;
#footerStyle= custom style for footer defaults to: display: flex; flex-direction: column; width: 100%; padding-top: 10px;
#linkTerms= absolute url to terms of use
#linkCookies= absolute link to cookie policy
#linkPrivacy= absolute link to privacy policiy defaults to: https://www.iubenda.com/privacy-policy/441050
#linkProject= absolute link to project home site
#descrProject= description of project
#ECLogo= include EC logo defaults to no
#ECLogoStyle= custom style for EC logo defaults to max-width: 35px;
#ECLogoAlt= alt text for EC logo defaults to EU H2020 programme
#footerRow= custom HTML text for footer content
parent=d4science
titleTag=AGINFRAPlus Gateway
favicon=https://aginfra.d4science.org/generic-configurable-theme/images/favicon.ico
logoSrc=https://aginfra.d4science.org/image/layout_set_logo?img_id=26845094&t=1610441736518
logoAlt=AGINFRAPlus Gateway
logoStyle=height: 50px;
infrastructureLogo=yes
linkTerms=https://aginfra.d4science.org/terms-of-use
linkCookies=https://aginfra.d4science.org/cookie-policy
linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=http://plus.aginfra.eu/
ECLogo=yes
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=AGINFRA PLUS receives funding from the European Unions Horizon 2020 research and innovation programme under grant agreement No. 731001 <br/> The views and opinions expressed in this website are the sole responsibility of the author and do not necessarily reflect the views of the European Commission.

View File

@ -0,0 +1,52 @@
#parent= the parent then defaults to d4science
#titleTag= the page title is mandatory
#favicon= absolute url to favicon defaults to https://services.d4science.org/favicon.ico
#contentBgImg= relative path to bg image defaults to img/color-triangles.png
#contentStyle= define custom styles. Note: use this for overriding BG image when pointing to external resource such as background: url("https://url-of-background-img"i no-repeat center center fixed); background-size: cover;
#logoHeaderStyle= custom style for logoHeader defaults to display: flex; justify-content: space-between; width: 100%;
#logoSrc= url for logo image is mandatory
#logoAlt= alt text for logo gCubeDev Gateway
#logoStyle= custom style for logo defautls to height: 60px;
#infrastructureLogo= yes (default) if "powered for d4science has to be included". no otherwise
#infrastructureLogoStyle= custom style for infrastructureLogo defaults to height: 40px;
#footerStyle= custom style for footer defaults to: display: flex; flex-direction: column; width: 100%; padding-top: 10px;
#linkTerms= absolute url to terms of use
#linkCookies= absolute link to cookie policy
#linkPrivacy= absolute link to privacy policiy defaults to: https://www.iubenda.com/privacy-policy/441050
#linkProject= absolute link to project home site
#descrProject= description of project
#ECLogo= include EC logo defaults to no
#ECLogoStyle= custom style for EC logo defaults to max-width: 35px;
#ECLogoAlt= alt text for EC logo defaults to EU H2020 programme
#footerRow= custom HTML text for footer content
parent=d4science
titleTag=ARIADNEPlus Gateway
favicon=https://ariadne.d4science.org/generic-configurable-theme/images/favicon.ico
logoSrc=https://ariadne.d4science.org/image/layout_set_logo?img_id=164305244&t=1610441736528
logoAlt=ARIADNEPlus Gateway
logoStyle=height: 50px;
infrastructureLogo=yes
linkTerms=https://ariadne.d4science.org/terms-of-use
linkCookies=https://ariadne.d4science.org/cookie-policy
linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=http://ariadne-infrastructure.eu
ECLogo=yes
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=ARIADNEplus is funded by the European Commission under the H2020 Programme, contract no. H2020-INFRAIA-2018-1-823914. <br/>The views and opinions expressed in this publication are the sole responsibility of the author and do not necessarily reflect the views of the European Commission.

View File

@ -0,0 +1,52 @@
#parent= the parent then defaults to d4science
#titleTag= the page title is mandatory
#favicon= absolute url to favicon defaults to https://services.d4science.org/favicon.ico
#contentBgImg= relative path to bg image defaults to img/color-triangles.png
#contentStyle= define custom styles. Note: use this for overriding BG image when pointing to external resource such as background: url("https://url-of-background-img"i no-repeat center center fixed); background-size: cover;
#logoHeaderStyle= custom style for logoHeader defaults to display: flex; justify-content: space-between; width: 100%;
#logoSrc= url for logo image is mandatory
#logoAlt= alt text for logo gCubeDev Gateway
#logoStyle= custom style for logo defautls to height: 60px;
#infrastructureLogo= yes (default) if "powered for d4science has to be included". no otherwise
#infrastructureLogoStyle= custom style for infrastructureLogo defaults to height: 40px;
#footerStyle= custom style for footer defaults to: display: flex; flex-direction: column; width: 100%; padding-top: 10px;
#linkTerms= absolute url to terms of use
#linkCookies= absolute link to cookie policy
#linkPrivacy= absolute link to privacy policiy defaults to: https://www.iubenda.com/privacy-policy/441050
#linkProject= absolute link to project home site
#descrProject= description of project
#ECLogo= include EC logo defaults to no
#ECLogoStyle= custom style for EC logo defaults to max-width: 35px;
#ECLogoAlt= alt text for EC logo defaults to EU H2020 programme
#footerRow= custom HTML text for footer content
parent=d4science
titleTag=Blue-Cloud Gateway
favicon=https://blue-cloud.d4science.org/generic-configurable-theme/images/favicon.ico
contentBgImg=
contentStyle=background: url("https://blue-cloud.d4science.org/generic-configurable-theme/images/custom/bb_background.jpg") no-repeat center center fixed; background-size: cover;
logoSrc=https://blue-cloud.d4science.org/image/layout_set_logo?img_id=199274286&t=1610441455783
logoAlt=Blue-Cloud Gateway
logoStyle=height: 50px;
infrastructureLogo=yes
linkTerms=https://blue-cloud.d4science.org/terms-of-use
linkCookies=https://blue-cloud.d4science.org/cookie-policy
linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=https://www.blue-cloud.org
ECLogo=yes
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=Blue-Cloud has received funding from the European Unions Horizon programme call BG-07-2019-2020, topic: [A] 2019 - Blue Cloud services, Grant Agreement n.862409

View File

@ -0,0 +1 @@
parent=d4science

View File

@ -0,0 +1 @@
parent=d4science

View File

@ -0,0 +1 @@
parent=d4science

View File

@ -0,0 +1,33 @@
parent=d4science
#styles=
titleTag=Blue-Cloud Login
favicon=https://blue-cloud.d4science.org/generic-configurable-theme/images/favicon.ico
contentBgImg=img/blue-triangles.png
#contentStyle=background: url("https://url-of-background-img");
#logoHeaderStyle=
logoSrc=https://blue-cloud.d4science.org/image/layout_set_logo?img_id=199274286&t=1591610863691
logoAlt=Blue-Cloud Gateway
logoStyle=height: 40px;
infrastructureLogo=yes
#infrastructureLogoStyle=height: 40px;
#footerStyle=
linkTerms=https://blue-cloud.d4science.org/terms-of-use
linkCookies=https://blue-cloud.d4science.org/cookie-policy
#linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=https://www.blue-cloud.org/
descrProject=Blue-Cloud Project Website
ECLogo=yes
ECLogoSrc=https://blue-cloud.d4science.org/generic-configurable-theme/images/custom/logo-ec.jpg
#ECLogoStyle=max-width: 35px;
#ECLogoAlt=EU H2020 programme
footerRow=Blue-Cloud has received funding from the European Union's Horizon programme call BG-07-2019-2020, topic: [A] 2019 - Blue Cloud services, Grant Agreement n.862409

View File

@ -0,0 +1,191 @@
<#import "template.ftl" as layout>
<@layout.mainLayout active='account' bodyClass='user'; section>
<div class="row">
<div class="col-md-10">
<h2>${msg("editAccountHtmlTitle")}</h2>
</div>
<div class="col-md-2 subtitle">
<span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
</div>
</div>
<form action="${url.accountUrl}" class="form-horizontal" method="post">
<input type="hidden" id="stateChecker" name="stateChecker" value="${stateChecker}">
<#if !realm.registrationEmailAsUsername>
<div class="form-group ${messagesPerField.printIfExists('username','has-error')}">
<div class="col-sm-2 col-md-2">
<label for="username" class="control-label">${msg("username")}</label> <#if realm.editUsernameAllowed><span class="required">*</span></#if>
</div>
<div class="col-sm-10 col-md-10">
<input type="text" class="form-control" id="username" name="username" <#if !realm.editUsernameAllowed>disabled="disabled"</#if> value="${(account.username!'')}"/>
</div>
</div>
</#if>
<div class="form-group ${messagesPerField.printIfExists('email','has-error')}">
<div class="col-sm-2 col-md-2">
<label for="email" class="control-label">${msg("email")}</label> <span class="required">*</span>
</div>
<div class="col-sm-10 col-md-10">
<input type="text" class="form-control" id="email" name="email" autofocus value="${(account.email!'')}"/>
</div>
</div>
<div class="form-group ${messagesPerField.printIfExists('firstName','has-error')}">
<div class="col-sm-2 col-md-2">
<label for="firstName" class="control-label">${msg("firstName")}</label> <span class="required">*</span>
</div>
<div class="col-sm-10 col-md-10">
<input type="text" class="form-control" id="firstName" name="firstName" value="${(account.firstName!'')}"/>
</div>
</div>
<div class="form-group ${messagesPerField.printIfExists('lastName','has-error')}">
<div class="col-sm-2 col-md-2">
<label for="lastName" class="control-label">${msg("lastName")}</label> <span class="required">*</span>
</div>
<div class="col-sm-10 col-md-10">
<input type="text" class="form-control" id="lastName" name="lastName" value="${(account.lastName!'')}"/>
</div>
</div>
<div class="form-group">
<div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
<div class="">
<#if url.referrerURI??><a href="${url.referrerURI}">${kcSanitize(msg("backToApplication")?no_esc)}</a></#if>
<button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Save">${msg("doSave")}</button>
<button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Cancel">${msg("doCancel")}</button>
</div>
</div>
</div>
</form>
<div class="row">
<div class="col-md-10">
<h2>${msg("changeAvatarHtmlTitle")}</h2>
</div>
</div>
<#assign avatarUrl = url.accountUrl?replace("^(.*)(/account/?)(\\?(.*))?$", "$1/avatar-provider/?account&$4", 'r') />
<form id="theForm" action="${avatarUrl}" class="form-horizontal" method="post" enctype="multipart/form-data">
<img src="${avatarUrl}" style="max-width: 200px;"
onerror="let div=document.createElement('div');div.id='avatarInfo';div.innerHTML='${msg("noAvatarSet")}<br/>${msg("avatarFileSizeMessage")}';this.replaceWith(div)" />
<div id="avatarError" class="alert alert-danger" style="margin-top: 0; display: none;">
<span class="pficon pficon-error-circle-o"></span>
<strong>${msg("avatarFileTooBig")}</strong> ${msg("avatarFileSizeMessage")}
</div>
<input style="margin-top: 1em;" type="file" id="avatar" name="imageSelector">
<input type="hidden" name="stateChecker" value="${stateChecker}">
<div class="form-group">
<div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
<div class="">
<button type="button" onClick="sendAvatar()" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="Save">${msg("doSave")}</button>
</div>
</div>
</div>
<script>
function sendAvatar() {
var filesToUpload = avatar.files;
var file = filesToUpload[0];
// Create an image
var img = document.createElement("img");
// Create a file reader
var reader = new FileReader();
// Set the image once loaded into file reader
reader.onload = function(e) {
img.src = e.target.result;
img.onload = function () {
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
var MAX_WIDTH = 250;
var MAX_HEIGHT = 250;
var width = img.width;
var height = img.height;
if (width > height) {
if (width > MAX_WIDTH) {
height *= MAX_WIDTH / width;
width = MAX_WIDTH;
}
} else {
if (height > MAX_HEIGHT) {
width *= MAX_HEIGHT / height;
height = MAX_HEIGHT;
}
}
canvas.width = width;
canvas.height = height;
ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, width, height);
canvas.toBlob(function(blob) {
var form = document.getElementById('theForm')
var formData = new FormData(form)
// Deleting the big image from the form data to prevent send
formData.delete('imageSelector')
// Adding new blob with new image with right size
formData.append("image", blob);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
location.reload();
}
};
xhr.open(form.method, form.action, true);
xhr.send(formData);
});
} // img.onload
}
// Load files into file reader
reader.readAsDataURL(file);
}
</script>
</form>
<div class="row">
<div class="col-md-10">
<h2>${msg("deleteAccountHtmlTitle")}</h2>
</div>
</div>
<#assign deleteUrl = url.accountUrl?replace("^(.*)(/account/?)(\\?(.*))?$", "$1/delete-account/delete?$4", 'r') />
<form action="${deleteUrl}" class="form-horizontal" method="post" onsubmit="return confirm('${msg("deleteAccountConfirmDeleteMessage")}');" >
<input type="hidden" name="stateChecker" value="${stateChecker}">
<div class="form-group">
<div class="col-md-12">${msg("deleteAccountMessage")}</div>
</div>
<div class="form-group" style="border: 1px solid #f1d875; background: #fffbdc">
<div class="col-md-1" style="font-weight: bold; color: #bf7900;">${msg("deleteAccountWarningTitle")}</div>
<div class="col-md-11">${msg("deleteAccountWarningMessage")}</div>
</div>
<div class="form-group">
<div id="kc-form-buttons" class="col-md-offset-2 col-md-10 submit">
<div class="">
<button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="submitAction" value="${msg("deleteAccountSubmitButton")}">${msg("deleteAccountSubmitButton")}</button>
</div>
</div>
</div>
</form>
</@layout.mainLayout>

View File

@ -0,0 +1 @@
accountManagementTitle=Gesti\u00F3 de Compte D4Science

View File

@ -0,0 +1,10 @@
accountManagementTitle=D4Science Benutzerkontoverwaltung
changeAvatarHtmlTitle=Profilbild bearbeiten
deleteAccountHtmlTitle=Account löschen
deleteAccountSubmitButton=Das Löschen des Account bestätigen
deleteAccountMessage=Das Löschen ihres Account deaktiviert ihren Profil und löscht ihren Namen und Profilbild dass Sie auf dem D4Science Gateway mitgeteilt haben. Einige Informationen weredn immer noch sichtbar bleiben wie zum Beispiel ihr Name auf Posts oder privaten Mitteilungen. Alle Files und Ordnern das Sie auf ihrem workspace kreiert haben werden gelöscht.
deleteAccountWarningTitle=Achtung
deleteAccountWarningMessage=Das Klicken auf dem "Das Löschen des Account bestätigen" Knopf is nicht rückgängig, ihr Account wird gelöscht und Sie werden automatisch aus allen ihren Sessionen aus-geloggt.
deleteAccountConfirmDeleteMessage=\\nWollen Sie wirklich ihren Account löschen?\\n\\n[Hinweis: Diese Operation ist nicht rückgängig]

View File

@ -0,0 +1,18 @@
accountManagementTitle=D4Science Account Management
accountManagementWelcomeMessage=Welcome to D4Science Account Management
authenticatorFinishSetUpMessage=Each time you sign in to your D4Science account, you will be asked to provide a two-factor authentication code.
authenticatorSMSMessage=D4Science will send the Verification code to your phone as the two-factor authentication.
changeAvatarHtmlTitle=Edit Avatar
noAvatarSet=Please upload an image (100x100px size is suggested, images exceding 250x250px will be resized to 250px width or height mantaining their ratio) choosing a file and clicking on Save button.
avatarFileSizeMessage=The maximum file size permitted is 1MB.
avatarFileTooBig=File too big error!
deleteAccountHtmlTitle=Delete your Account
deleteAccountSubmitButton=Confirm delete account
deleteAccountMessage=Deleting your account will disable your profile and remove your name and photo you''ve shared on D4Science gateway(s). Some information may still be visible to others, such as your name in the posts and private messages you sent. All files and folders you created of your workspace will be removed.
deleteAccountWarningTitle=Warning
deleteAccountWarningMessage=Clicking on the "Confirm delete account" button is an undoable operation, your account will be removed and you'll be automatically logged out from all your sessions.
deleteAccountConfirmDeleteMessage=\\nDo you really want to remove your account?\\n\\n[NOTE: This action is irreversible]

View File

@ -0,0 +1 @@
accountManagementTitle=Gesti\u00F3n de Cuenta D4Science

View File

@ -0,0 +1,11 @@
# TIPS to encode UTF-8 to ISO
# native2ascii -encoding ISO8859_1 srcFile > dstFile
accountManagementTitle=Gestion du compte D4Science
deleteAccountHtmlTitle=Suppression de compte
deleteAccountSubmitButton=Confirmer la suppression du compte
deleteAccountMessage=La suppression de votre compte désactivera le profil et supprimera le nom et les photos partagés sur le(s) gateway D4Science. Certaines informations peuvent toujours être visibles aux autres utilisateurs, telles que le nom dans les publications et les messages privés envoyés. Tous les fichiers et dossiers créés dans l'espace de travail (worksapce) personnel seront supprimés.
deleteAccountWarningTitle=Attention
deleteAccountWarningMessage=En cliquant sur le bouton "Confirmer la suppression du compte" lancera une opération irréversible, le compte personnel sera supprimé et toutes les sessions ouvertes sur les différents sites seront fermé.
deleteAccountConfirmDeleteMessage=\\nVous voulez vraiment annuler votre compte?\\n\\n[Remarque: Cette action est irréversible]

View File

@ -0,0 +1,13 @@
accountManagementTitle=D4Science Account Management
changeAvatarHtmlTitle=Modifica Avatar
noAvatarSet=Caricare un&#39;immagine (si consiglia una dimensione di 100x100 px, le immagini che eccedono 250x250px saranno ridimensionate a 250px di larchezza o altezza mantenendo il loro rapporto) con Scegli file e premendo quindi su Salva
avatarFileSizeMessage=La massima dimensione consentita del file è di 1MB.
avatarFileTooBig=Dimensione file eccessiva!
deleteAccountHtmlTitle=Cancellazione Account
deleteAccountSubmitButton=Conferma cancellazione account
deleteAccountMessage=La cancellazione del proprio account disabiliterà il profilo e rimuoverà il nome e le foto condivise sul/sui gateway D4Science. Alcune informazioni potrebbero risultare ancora visibili agli altri utenti, come il nome nei post e nei messaggi privati inviati. Tutti i file e le cartelle create nel workspace personale saranno rimosse.
deleteAccountWarningTitle=Attenzione
deleteAccountWarningMessage=Cliccando sul bottone "Conferma cancellazione account" si avvierà un''operazione irreversibile, l''account personale sarà rimosso e saranno terminate tutte le sessioni aperte nei vari siti.
deleteAccountConfirmDeleteMessage=\\nSi vuole veramente cancellare il proprio account?\\n\\n[NB: Questa azione è irreversible]

View File

@ -0,0 +1,5 @@
# encoding: utf-8
accountManagementWelcomeMessage=D4Science アカウント管理へようこそ
authenticatorFinishSetUpMessage=D4Scienceアカウントにサインインするたびに、2要素認証コードを入力するように求められます。
authenticatorSMSMessage=D4Scienceは、2要素認証として確認コードを携帯電話に送信します。

View File

@ -0,0 +1,2 @@
# encoding: utf-8
accountManagementTitle=D4Science Naudotojų Administravimas

View File

@ -0,0 +1 @@
accountManagementTitle=D4Science Accountbeheer

View File

@ -0,0 +1 @@
accountManagementTitle=D4Science kontoadministrasjon

View File

@ -0,0 +1,2 @@
# encoding: utf-8
accountManagementTitle=Správa účtu D4Science

View File

@ -0,0 +1,2 @@
# encoding: utf-8
accountManagementTitle=Kontohantering för D4Science

View File

@ -0,0 +1,6 @@
accountManagementTitle=D4Science Kullan\u0131c\u0131 Hesab\u0131 Y\u00F6netimi
accountManagementWelcomeMessage=D4Science Hesap Y\u00F6netimine Ho\u015F Geldiniz
authenticatorFinishSetUpMessage=D4Science hesab\u0131n\u0131zda her oturum a\u00E7t\u0131\u011F\u0131n\u0131zda, iki fakt\u00F6rl\u00FC bir do\u011Frulama kodu girmeniz istenecektir.
authenticatorSMSMessage=D4Science, do\u011Frulama kodunu telefonunuza iki fakt\u00F6rl\u00FC kimlik do\u011Frulamas\u0131 olarak g\u00F6nderecektir.

View File

@ -0,0 +1,2 @@
# encoding: utf-8
accountManagementTitle=D4Science账户管理

View File

@ -0,0 +1,286 @@
html {
height: 100%;
}
body {
background-color: #F9F9F9;
margin: 0;
padding: 0;
height: 100%;
}
header .navbar {
margin-bottom: 0;
min-height: inherit;
}
.header .container {
position: relative;
}
.navbar-title {
background-image: url('../img/logo.png');
height: 36px;
background-repeat: no-repeat;
width: 180px;
margin: 3px 10px 5px;
text-indent: -99999px;
}
.navbar-pf {
background: #585858;
border-top: 0;
}
.navbar-pf .navbar-header {
border-bottom: 0;
}
.navbar-pf .navbar-utility {
right: 20px;
top: -34px;
font-size: 12px;
}
.navbar-pf .navbar-utility > li > a {
color: #fff !important;
padding-bottom: 12px;
padding-top: 11px;
border-left: medium none;
}
.container {
height: 100%;
}
.content-area {
background-color: #fff;
border-color: #CECECE;
border-style: solid;
border-width: 0 1px;
height: 100%;
padding: 0 30px;
}
.margin-bottom {
margin-bottom: 10px;
}
/* Sidebar */
.bs-sidebar {
background-color: #f9f9f9;
padding-top: 44px;
padding-right: 0;
padding-left: 0;
z-index: 20;
}
.bs-sidebar ul {
list-style: none;
padding-left: 12px;
}
.bs-sidebar ul li {
margin-bottom: 0.5em;
margin-left: -1em;
}
.bs-sidebar ul li a {
font-size: 14px;
padding-left: 25px;
color: #4d5258;
line-height: 28px;
display: block;
border-width: 1px 0 1px 1px;
border-style: solid;
border-color: #f9f9f9;
}
.bs-sidebar ul li a:hover,
.bs-sidebar ul li a:focus {
text-decoration: none;
color: #777777;
border-right: 2px solid #aaa;
}
.bs-sidebar ul li.active a {
background-color: #c7e5f0;
border-color: #56bae0;
font-weight: bold;
background-image: url(../img/icon-sidebar-active.png);
background-repeat: no-repeat;
background-position: right center;
}
.bs-sidebar ul li.active a:hover {
border-right: none;
}
.content-area h2 {
font-family: "Open Sans", sans-serif;
font-weight: 100;
font-size: 24px;
margin-bottom: 25px;
margin-top: 25px;
}
.subtitle {
text-align: right;
margin-top: 30px;
color: #909090;
}
.required {
color: #CB2915;
}
.alert {
margin-top: 30px;
margin-bottom: 0;
}
.feedback-aligner .alert {
background-position: 1.27273em center;
background-repeat: no-repeat;
border-radius: 2px;
border-width: 1px;
color: #4D5258;
display: inline-block;
font-size: 1.1em;
line-height: 1.4em;
margin: 0;
padding: 0.909091em 3.63636em;
position: relative;
text-align: left;
}
.alert.alert-success {
background-color: #E4F1E1;
border-color: #4B9E39;
}
.alert.alert-error {
background-color: #F8E7E7;
border-color: #B91415;
}
.alert.alert-warning {
background-color: #FEF1E9;
border-color: #F17528;
}
.alert.alert-info {
background-color: #E4F3FA;
border-color: #5994B2;
}
.form-horizontal {
border-top: 1px solid #E9E8E8;
padding-top: 23px;
}
.form-horizontal .control-label {
color: #909090;
line-height: 1.4em;
padding-top: 5px;
position: relative;
text-align: right;
width: 100%;
}
.form-group {
position: relative;
}
.control-label + .required {
position: absolute;
right: -2px;
top: 0;
}
#kc-form-buttons {
text-align: right;
margin-top: 10px;
}
#kc-form-buttons .btn-primary {
float: right;
margin-left: 8px;
}
/* Authenticator page */
ol {
padding-left: 40px;
}
ol li {
font-size: 13px;
margin-bottom: 10px;
position: relative;
}
ol li img {
margin-top: 15px;
margin-bottom: 5px;
border: 1px solid #eee;
}
hr + .form-horizontal {
border: none;
padding-top: 0;
}
.kc-dropdown{
position: relative;
}
.kc-dropdown > a{
display:block;
padding: 11px 10px 12px;
line-height: 12px;
font-size: 12px;
color: #fff !important;
text-decoration: none;
}
.kc-dropdown > a::after{
content: "\2c5";
margin-left: 4px;
}
.kc-dropdown:hover > a{
background-color: rgba(0,0,0,0.2);
}
.kc-dropdown ul li a{
padding: 1px 11px;
font-size: 12px;
color: #000 !important;
border: 1px solid #fff;
text-decoration: none;
display:block;
line-height: 20px;
}
.kc-dropdown ul li a:hover{
color: #4d5258;
background-color: #d4edfa;
border-color: #b3d3e7;
}
.kc-dropdown ul{
position: absolute;
z-index: 2000;
list-style:none;
display:none;
padding: 5px 0px;
margin: 0px;
background-color: #fff !important;
border: 1px solid #b6b6b6;
border-radius: 1px;
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
background-clip: padding-box;
min-width: 100px;
}
.kc-dropdown:hover ul{
display:block;
}
#kc-totp-secret-key {
border: 1px solid #eee;
font-size: 16px;
padding: 10px;
margin: 50px 0;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -0,0 +1 @@
parent=keycloak.v2

View File

@ -0,0 +1,26 @@
module.service('UserAvatar', function(Auth) {
this.url = function(user, realm) {
return authUrl + '/realms/' + realm.realm + '/avatar-provider/admin/' + user.id + "?access_token=" + Auth.authz.token + "&" + + new Date().getTime();
}
});
module.controller('UserAvatarCtrl', function($scope, $http, Notifications, UserAvatar) {
$scope.avatarUrl = UserAvatar.url($scope.user, $scope.realm);
$scope.uploadAvatar = function(files) {
var fd = new FormData();
//Take the first selected file
fd.append("image", files[0]);
$http.post($scope.avatarUrl, fd, {
headers: {'Content-Type': undefined },
transformRequest: angular.identity
}).then(function() {
Notifications.success("Your changes have been saved to the user.");
$scope.avatarUrl = UserAvatar.url($scope.user, $scope.realm);
}, function(error) {
console.error(error);
Notifications.error("Could not save the avatar");
});
}
});

View File

@ -0,0 +1,169 @@
<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">
<ol class="breadcrumb">
<li><a href="#/realms/{{realm.realm}}/users">{{:: 'users' | translate}}</a></li>
<li data-ng-hide="create">{{user.username}}</li>
<li data-ng-show="create">{{:: 'add-user' | translate}}</li>
</ol>
<kc-tabs-user></kc-tabs-user>
<form class="form-horizontal" name="userForm" novalidate kc-read-only="!create && !user.access.manage">
<fieldset class="border-top">
<div class="form-group">
<label class="col-md-2 control-label"for="id">{{:: 'id' | translate}}</label>
<div class="col-md-6">
<input class="form-control" type="text" id="id" name="id" data-ng-model="user.id" autofocus data-ng-readonly="true">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label"for="id">{{:: 'created-at' | translate}}</label>
<div class="col-md-6">
{{user.createdTimestamp|date:'shortDate'}}&nbsp;{{user.createdTimestamp|date:'mediumTime'}}
</div>
</div>
<div class="form-group" data-ng-hide="emailAsUsername">
<label class="col-md-2 control-label"for="username">{{:: 'username' | translate}} <span class="required" data-ng-show="create">*</span></label>
<div class="col-md-6">
<!-- Characters >,<,/,\ are forbidden in username -->
<input class="form-control" type="text" id="username" name="username" data-ng-model="user.username" autofocus
data-ng-required="!emailAsUsername" ng-pattern="/^[^\<\>\\\/]*$/" data-ng-readonly="!editUsername">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label" for="email">{{:: 'email' | translate}}</label>
<div class="col-md-6">
<input class="form-control" type="email" name="email" id="email"
data-ng-model="user.email">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label" for="firstName">{{:: 'first-name' | translate}}</label>
<div class="col-md-6">
<input class="form-control" type="text" name="firstName" id="firstName"
data-ng-model="user.firstName">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label" for="lastName">{{:: 'last-name' | translate}}</label>
<div class="col-md-6">
<input class="form-control" type="text" name="lastName" id="lastName"
data-ng-model="user.lastName">
</div>
</div>
<div class="form-group clearfix block">
<label class="col-md-2 control-label" for="userEnabled">{{:: 'user-enabled' | translate}}</label>
<div class="col-md-6">
<input ng-model="user.enabled" name="userEnabled" id="userEnabled" ng-disabled="!create && !user.access.manage" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
</div>
<kc-tooltip>{{:: 'user-enabled.tooltip' | translate}}</kc-tooltip>
</div>
<div class="form-group clearfix block" data-ng-show="realm.bruteForceProtected && !create">
<label class="col-md-2 control-label" for="temporarilyDisabled">{{:: 'user-temporarily-locked' | translate}}</label>
<div class="col-md-1">
<input ng-model="temporarilyDisabled" name="temporarilyDisabled" id="temporarilyDisabled" data-ng-readonly="true" data-ng-disabled="true" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
</div>
<kc-tooltip>{{:: 'user-temporarily-locked.tooltip' | translate}}</kc-tooltip>
<div class="col-sm-2">
<button type="submit" data-ng-click="unlockUser()" data-ng-show="temporarilyDisabled" class="btn btn-default">{{:: 'unlock-user' | translate}}</button>
</div>
</div>
<div class="form-group clearfix block" data-ng-show="!create && user.federationLink">
<label class="col-md-2 control-label">{{:: 'federation-link' | translate}}</label>
<div class="col-md-6">
<a href="{{federationLink}}">{{federationLinkName}}</a>
</div>
<kc-tooltip>{{:: 'user-link.tooltip' | translate}}</kc-tooltip>
</div>
<div class="form-group clearfix block" data-ng-show="!create && user.origin">
<label class="col-md-2 control-label">{{:: 'user-origin-link' | translate}}</label>
<div class="col-md-6">
<a href="{{originLink}}">{{originName}}</a>
</div>
<kc-tooltip>{{:: 'user-origin.tooltip' | translate}}</kc-tooltip>
</div>
<div class="form-group clearfix block">
<label class="col-md-2 control-label" for="emailVerified">{{:: 'email-verified' | translate}}</label>
<div class="col-md-6">
<input ng-model="user.emailVerified" name="emailVerified" id="emailVerified" ng-disabled="!create && !user.access.manage" onoffswitch on-text="{{:: 'onText' | translate}}" off-text="{{:: 'offText' | translate}}"/>
</div>
<kc-tooltip>{{:: 'email-verified.tooltip' | translate}}</kc-tooltip>
</div>
<div class="form-group clearfix">
<label class="col-md-2 control-label" for="reqActions">{{:: 'required-user-actions' | translate}}</label>
<div class="col-md-6">
<select ui-select2 id="reqActions" ng-model="user.requiredActions" data-placeholder="{{:: 'select-an-action.placeholder' | translate}}" multiple>
<option ng-repeat="action in userReqActionList" value="{{action.alias}}">{{action.name}}</option>
</select>
</div>
<kc-tooltip>{{:: 'required-user-actions.tooltip' | translate}}</kc-tooltip>
</div>
<div class="form-group clearfix" data-ng-if="realm.internationalizationEnabled">
<label class="col-md-2 control-label" for="locale">{{:: 'locale' | translate}}</label>
<div class="col-md-6">
<div>
<select class="form-control" id="locale"
ng-model="user.attributes.locale"
ng-options="o as o for o in realm.supportedLocales">
<option value="" disabled selected>{{:: 'select-one.placeholder' | translate}}</option>
</select>
</div>
</div>
</div>
<div class="form-group clearfix" data-ng-hide="create || !access.impersonation">
<label class="col-md-2 control-label" for="impersonate">{{:: 'impersonate-user' | translate}}</label>
<div class="col-md-6">
<button id="impersonate" data-ng-show="access.impersonation" kc-read-only-ignore class="btn btn-default" data-ng-click="impersonate()">{{:: 'impersonate' | translate}}</button>
</div>
<kc-tooltip>{{:: 'impersonate-user.tooltip' | translate}}</kc-tooltip>
</div>
</fieldset>
<div class="form-group">
<div class="col-md-10 col-md-offset-2" data-ng-show="create && access.manageUsers">
<button kc-save data-ng-show="changed">{{:: 'save' | translate}}</button>
<button kc-cancel data-ng-click="cancel()">{{:: 'cancel' | translate}}</button>
</div>
<div class="col-md-10 col-md-offset-2" data-ng-show="!create && user.access.manage">
<button kc-save data-ng-disabled="!changed">{{:: 'save' | translate}}</button>
<button kc-reset data-ng-disabled="!changed">{{:: 'cancel' | translate}}</button>
</div>
</div>
</form>
<form class="form-horizontal" ng-controller="UserAvatarCtrl" novalidate>
<fieldset class="border-top">
<legend><span class="text">Avatar</span></legend>
<div class="form-group">
<div class="col-md-10 col-md-offset-2">
<img style="max-width:600px;" src="{{ avatarUrl }}" />
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label" for="image">Upload</label>
<div class="col-md-6">
<input class="form-control" type="file" name="image" id="image" onchange="angular.element(this).scope().uploadAvatar(this.files)" />
</div>
</div>
</fieldset>
</form>
</div>
<kc-menu></kc-menu>

View File

@ -0,0 +1,2 @@
parent=keycloak
scripts=js/user-avatar.js

View File

@ -0,0 +1 @@
parent=keycloak.v2

View File

@ -0,0 +1,61 @@
<#import "template.ftl" as layout>
<@layout.registrationLayout; section>
<#if section = "header">
${msg("loginProfileTitle")}
<#elseif section = "form">
<form id="kc-update-profile-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
<#if user.editUsernameAllowed>
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('username',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="username" class="${properties.kcLabelClass!}">${msg("username")}</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="text" id="username" name="username" value="${(user.username!'')}" class="${properties.kcInputClass!}" pattern="^(?!postfix$)(?!cyrus$)[a-zA-Z0-9\.]+$" title='${msg("usernameValidityMsg")}' />
</div>
</div>
</#if>
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('email',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="email" class="${properties.kcLabelClass!}">${msg("email")}</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="text" id="email" name="email" value="${(user.email!'')}" class="${properties.kcInputClass!}" />
</div>
</div>
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('firstName',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="firstName" class="${properties.kcLabelClass!}">${msg("firstName")}</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="text" id="firstName" name="firstName" value="${(user.firstName!'')}" class="${properties.kcInputClass!}" />
</div>
</div>
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('lastName',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="lastName" class="${properties.kcLabelClass!}">${msg("lastName")}</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="text" id="lastName" name="lastName" value="${(user.lastName!'')}" class="${properties.kcInputClass!}" />
</div>
</div>
<div class="${properties.kcFormGroupClass!}">
<div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
<div class="${properties.kcFormOptionsWrapperClass!}">
</div>
</div>
<div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
<#if isAppInitiatedAction??>
<input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}" />
<button class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" type="submit" name="cancel-aia" value="true" />${msg("doCancel")}</button>
<#else>
<input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}" />
</#if>
</div>
</div>
</form>
</#if>
</@layout.registrationLayout>

View File

@ -0,0 +1 @@
confirmLinkIdpReviewProfile=Informationen für neues Profil überprüfen

View File

@ -0,0 +1,5 @@
confirmLinkIdpReviewProfile=Review information for new profile
termsAcceptMsg=You have to scroll down to read and then accept the terms
usernameValidityMsg=Only letters, numbers and dots are permitted

View File

@ -0,0 +1 @@
confirmLinkIdpReviewProfile=Revisar información para nuevo perfil

View File

@ -0,0 +1 @@
confirmLinkIdpReviewProfile=Examiner les informations pour le nouveau profil

View File

@ -0,0 +1,3 @@
confirmLinkIdpReviewProfile=Rivedi le informazioni del nuovo profilo
usernameValidityMsg=Sono consentiti solo lettere, numeri e punti

View File

@ -0,0 +1,110 @@
<#import "template.ftl" as layout>
<@layout.registrationLayout; section>
<#if section = "header">
${msg("registerTitle")}
<#elseif section = "form">
<form id="kc-register-form" class="${properties.kcFormClass!}" action="${url.registrationAction}" method="post">
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('firstName',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="firstName" class="${properties.kcLabelClass!}">${msg("firstName")}</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="text" id="firstName" class="${properties.kcInputClass!}" name="firstName" value="${(register.formData.firstName!'')}" />
</div>
</div>
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('lastName',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="lastName" class="${properties.kcLabelClass!}">${msg("lastName")}</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="text" id="lastName" class="${properties.kcInputClass!}" name="lastName" value="${(register.formData.lastName!'')}" />
</div>
</div>
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('email',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="email" class="${properties.kcLabelClass!}">${msg("email")}</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="text" id="email" class="${properties.kcInputClass!}" name="email" value="${(register.formData.email!'')}" autocomplete="email" />
</div>
</div>
<#if !realm.registrationEmailAsUsername>
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('username',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="username" class="${properties.kcLabelClass!}">${msg("username")}</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="text" id="username" class="${properties.kcInputClass!}" name="username" value="${(register.formData.username!'')}" pattern="^(?!postfix$)(?!cyrus$)[a-zA-Z0-9\.]+$" title='${msg("usernameValidityMsg")}' autocomplete="username" />
</div>
</div>
</#if>
<#if passwordRequired??>
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('password',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="password" class="${properties.kcLabelClass!}">${msg("password")}</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="password" id="password" class="${properties.kcInputClass!}" name="password" autocomplete="new-password"/>
</div>
</div>
<div class="${properties.kcFormGroupClass!} ${messagesPerField.printIfExists('password-confirm',properties.kcFormGroupErrorClass!)}">
<div class="${properties.kcLabelWrapperClass!}">
<label for="password-confirm" class="${properties.kcLabelClass!}">${msg("passwordConfirm")}</label>
</div>
<div class="${properties.kcInputWrapperClass!}">
<input type="password" id="password-confirm" class="${properties.kcInputClass!}" name="password-confirm" />
</div>
</div>
</#if>
<#if recaptchaRequired??>
<div class="form-group">
<div class="${properties.kcInputWrapperClass!}">
<div class="g-recaptcha" data-size="compact" data-sitekey="${recaptchaSiteKey}"></div>
</div>
</div>
</#if>
<div class="${properties.kcFormGroupClass!}">
<div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
<div class="${properties.kcFormOptionsWrapperClass!}">
<span><a href="${url.loginUrl}">${kcSanitize(msg("backToLogin"))?no_esc}</a></span>
</div>
</div>
<div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
<input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" name="submitBtn" type="submit" value="${msg("doRegister")}"/>
</div>
</div>
</form>
<script type="text/javascript">
var screenname = document.getElementById("username")
if (screenname) {
screenname.addEventListener("input", function(ev) {
if (screenname.validity.patternMismatch) {
screenname.setCustomValidity('${msg("usernameValidityMsg")}')
screenname.reportValidity()
} else {
screenname.setCustomValidity('')
screenname.reportValidity()
}
})
}
var kcRegisterForm = document.getElementById("kc-register-form")
kcRegisterForm.submitBtn.addEventListener("click", function(ev) {
if (!kcRegisterForm.checkValidity()) {
ev.preventDefault()
ev.stopPropagation()
kcRegisterForm.reportValidity()
}
})
</script>
</#if>
</@layout.registrationLayout>

View File

@ -0,0 +1,568 @@
.login-pf body {
display: flex;
flex-direction: column;
height: 100vh;
}
#content {
flex: 1 0 auto;
display: flex;
flex-direction: column;
justify-content: center;
}
.alert-error {
background-color: #ffffff;
border-color: #cc0000;
color: #333333;
}
#kc-locale ul {
display: none;
position: absolute;
background-color: #fff;
list-style: none;
right: 0;
top: 20px;
min-width: 100px;
padding: 2px 0;
border: solid 1px #bbb;
}
#kc-locale:hover ul {
display: block;
margin: 0;
}
#kc-locale ul li a {
display: block;
padding: 5px 14px;
color: #000 !important;
text-decoration: none;
line-height: 20px;
}
#kc-locale ul li a:hover {
color: #4d5258;
background-color: #d4edfa;
}
#kc-locale-dropdown a {
color: #4d5258;
background: 0 0;
padding: 0 15px 0 0;
font-weight: 300;
}
#kc-locale-dropdown a:hover {
text-decoration: none;
}
a#kc-current-locale-link {
display: block;
padding: 0 5px;
}
/* a#kc-current-locale-link:hover {
background-color: rgba(0,0,0,0.2);
} */
a#kc-current-locale-link::after {
content: "\2c5";
margin-left: 4px;
}
.login-pf .container {
padding-top: 40px;
}
.login-pf a:hover {
color: #0099d3;
}
#kc-logo {
width: 100%;
}
#kc-logo-wrapper {
background-image: url(../img/keycloak-logo-2.png);
background-repeat: no-repeat;
height: 63px;
width: 300px;
margin: 62px auto 0;
}
div.kc-logo-text {
background-image: url(../img/keycloak-logo-text.png);
background-repeat: no-repeat;
height: 63px;
width: 300px;
margin: 0 auto;
}
div.kc-logo-text span {
display: none;
}
#kc-header {
color: #ededed;
overflow: visible;
white-space: nowrap;
}
#kc-header-wrapper {
font-size: 29px;
text-transform: uppercase;
letter-spacing: 3px;
line-height: 1.2em;
padding: 62px 10px 20px;
white-space: normal;
}
#kc-content {
width: 100%;
}
#kc-attempted-username{
font-size: 20px;
font-family:inherit;
font-weight: normal;
padding-right:10px;
}
#kc-username{
text-align: center;
}
#kc-webauthn-settings-form{
padding-top:8px;
}
/* #kc-content-wrapper {
overflow-y: hidden;
} */
/* #kc-info {
padding-bottom: 200px;
margin-bottom: -200px;
} */
#kc-info-wrapper {
font-size: 13px;
}
#kc-form-options span {
display: block;
}
#kc-form-options .checkbox {
margin-top: 0;
color: #72767b;
}
#kc-terms-text {
margin-bottom: 20px;
}
#kc-registration {
margin-bottom: 15px;
}
/* TOTP */
.subtitle {
text-align: right;
margin-top: 30px;
color: #909090;
}
.required {
color: #CB2915;
}
ol#kc-totp-settings {
margin: 0;
padding-left: 20px;
}
ul#kc-totp-supported-apps {
margin-bottom: 10px;
}
#kc-totp-secret-qr-code {
max-width:150px;
max-height:150px;
}
#kc-totp-secret-key {
background-color: #fff;
color: #333333;
font-size: 16px;
padding: 10px 0;
}
/* OAuth */
#kc-oauth h3 {
margin-top: 0;
}
#kc-oauth ul {
list-style: none;
padding: 0;
margin: 0;
}
#kc-oauth ul li {
border-top: 1px solid rgba(255, 255, 255, 0.1);
font-size: 12px;
padding: 10px 0;
}
#kc-oauth ul li:first-of-type {
border-top: 0;
}
#kc-oauth .kc-role {
display: inline-block;
width: 50%;
}
/* Code */
#kc-code textarea {
width: 100%;
height: 8em;
}
/* Social */
#kc-social-providers ul {
padding: 0;
}
#kc-social-providers li {
display: block;
}
#kc-social-providers li:first-of-type {
margin-top: 0;
}
.kc-login-tooltip{
position:relative;
display: inline-block;
}
.kc-login-tooltip .kc-tooltip-text{
top:-3px;
left:160%;
background-color: black;
visibility: hidden;
color: #fff;
min-width:130px;
text-align: center;
border-radius: 2px;
box-shadow:0 1px 8px rgba(0,0,0,0.6);
padding: 5px;
position: absolute;
opacity:0;
transition:opacity 0.5s;
}
/* Show tooltip */
.kc-login-tooltip:hover .kc-tooltip-text {
visibility: visible;
opacity:0.7;
}
/* Arrow for tooltip */
.kc-login-tooltip .kc-tooltip-text::after {
content: " ";
position: absolute;
top: 15px;
right: 100%;
margin-top: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent black transparent transparent;
}
.zocial,
a.zocial {
width: 100%;
font-weight: normal;
font-size: 14px;
text-shadow: none;
border: 0;
background: #f5f5f5;
color: #72767b;
border-radius: 0;
white-space: normal;
}
.zocial:before {
border-right: 0;
margin-right: 0;
}
.zocial span:before {
padding: 7px 10px;
font-size: 14px;
}
.zocial:hover {
background: #ededed !important;
}
.zocial.facebook,
.zocial.github,
.zocial.google,
.zocial.microsoft,
.zocial.stackoverflow,
.zocial.linkedin,
.zocial.twitter {
background-image: none;
border: 0;
box-shadow: none;
text-shadow: none;
}
/* Copy of zocial windows classes to be used for microsoft's social provider button */
.zocial.microsoft:before{ content: "\f15d"; }
.zocial.stackoverflow:before{ color: inherit; }
.zocial.oidc:before{
content: " ";
background: url(../img/academic.png);
height: 25px;
width: 25px;
background-size: contain;
background-repeat: no-repeat;
margin: 3px 3px 3px 7px;
}
.zocial.google:before{
content: " ";
background: url(../img/google.png);
height: 16px;
width: 16px;
background-size: contain;
background-repeat: no-repeat;
margin: 6px 8px 8px 8px;
}
@media (min-width: 768px) {
#kc-container-wrapper {
position: absolute;
width: 100%;
}
.login-pf .container {
padding-right: 80px;
}
#kc-locale {
position: relative;
text-align: right;
z-index: 9999;
}
}
@media (max-width: 767px) {
.login-pf body {
background: white;
}
#kc-header {
padding-left: 15px;
padding-right: 15px;
float: none;
text-align: left;
}
#kc-header-wrapper {
font-size: 16px;
font-weight: bold;
padding: 20px 60px 0 0;
color: #72767b;
letter-spacing: 0;
}
div.kc-logo-text {
margin: 0;
width: 150px;
height: 32px;
background-size: 100%;
}
#kc-form {
float: none;
}
#kc-info-wrapper {
border-top: 1px solid rgba(255, 255, 255, 0.1);
margin-top: 15px;
padding-top: 15px;
padding-left: 0px;
padding-right: 15px;
}
#kc-social-providers li {
display: block;
margin-right: 5px;
}
.login-pf .container {
padding-top: 15px;
padding-bottom: 15px;
}
#kc-locale {
position: absolute;
width: 200px;
top: 20px;
right: 20px;
text-align: right;
z-index: 9999;
}
#kc-logo-wrapper {
background-size: 100px 21px;
height: 21px;
width: 100px;
margin: 20px 0 0 20px;
}
}
@media (min-height: 646px) {
#kc-container-wrapper {
bottom: 12%;
}
}
@media (max-height: 645px) {
#kc-container-wrapper {
padding-top: 50px;
top: 20%;
}
}
.card-pf form.form-actions .btn {
float: right;
margin-left: 10px;
}
#kc-form-buttons {
margin-top: 40px;
}
.login-pf-page .login-pf-brand {
margin-top: 20px;
max-width: 360px;
width: 40%;
}
.card-pf {
background: #fff;
margin: 0 auto;
padding: 0 20px;
max-width: 500px;
border-top: 0;
box-shadow: 0 0 0;
}
.login-pf-page .card-pf{
padding: 20px 20px 20px 20px;
}
/*tablet*/
@media (max-width: 840px) {
.login-pf-page .card-pf{
max-width: none;
margin-left: 20px;
margin-right: 20px;
padding: 20px 20px 20px 20px;
}
}
@media (max-width: 767px) {
.login-pf-page .card-pf{
max-width: none;
margin-left: 0;
margin-right: 0;
padding-top: 0;
}
.card-pf.login-pf-accounts{
max-width: none;
}
}
.login-pf-page .login-pf-signup {
font-size: 15px;
color: #72767b;
}
#kc-content-wrapper .row {
margin-left: 0;
margin-right: 0;
}
@media (min-width: 768px) {
.login-pf-page .login-pf-social-section:first-of-type {
padding-right: 39px;
border-right: 1px solid #d1d1d1;
margin-right: -1px;
}
.login-pf-page .login-pf-social-section:last-of-type {
padding-left: 40px;
}
.login-pf-page .login-pf-social-section .login-pf-social-link:last-of-type {
margin-bottom: 0;
}
.login-pf-page .login-pf-social-double-col .login-pf-social-link {
-ms-flex-preferred-size: 100%;
flex-basis: 100%;
}
}
.login-pf-page .login-pf-social-link {
margin-bottom: 20px;
}
.login-pf-page .login-pf-social-link a {
padding: 2px 0;
}
.login-pf-page.login-pf-page-accounts {
margin-left: auto;
margin-right: auto;
}
.login-pf-page .btn-primary {
margin-top: 0;
}
.login-pf-page .list-view-pf .list-group-item {
border-bottom: 1px solid #ededed;
}
.login-pf-page .list-view-pf-description {
width: 100%;
}
.login-pf-page .card-pf{
margin-bottom: 10px;
}
#kc-form-login div.form-group:last-of-type,
#kc-register-form div.form-group:last-of-type,
#kc-update-profile-form div.form-group:last-of-type {
margin-bottom: 0px;
}
#kc-back {
margin-top: 5px;
}
form#kc-select-back-form div.login-pf-social-section {
padding-left: 0px;
border-left: 0px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 KiB

View File

@ -0,0 +1,201 @@
<#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true displayRequiredFields=false displayWide=false showAnotherWayIfPresent=true>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" class="${properties.kcHtmlClass!}">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="robots" content="noindex, nofollow"><!-- base -->
<#if properties.meta?has_content>
<#list properties.meta?split(' ') as meta>
<meta name="${meta?split('==')[0]}" content="${meta?split('==')[1]}"/>
</#list>
</#if>
<title><#if properties.titleTag?has_content>${properties.titleTag}<#else>${msg("loginTitle",(realm.displayName!''))}</#if></title>
<link rel="icon" href="<#if properties.favicon?has_content>${properties.favicon}<#else>${url.resourcesPath}/img/favicon.ico</#if>" />
<#if properties.styles?has_content>
<#list properties.styles?split(' ') as style>
<link href="${url.resourcesPath}/${style}" rel="stylesheet" />
</#list>
</#if>
<#if properties.scripts?has_content>
<#list properties.scripts?split(' ') as script>
<script src="${url.resourcesPath}/${script}" type="text/javascript"></script>
</#list>
</#if>
<#if scripts??>
<#list scripts as script>
<script src="${script}" type="text/javascript"></script>
</#list>
</#if>
</head>
<body class="${properties.kcBodyClass!}">
<div id="content" style="<#if properties.contentBgImg?has_content>background: url('${url.resourcesPath}/${properties.contentBgImg!}') no-repeat center center fixed; background-size: cover;</#if> ${properties.contentStyle!}">
<div class="${properties.kcLoginClass!}">
<!--
<div id="kc-header" class="${properties.kcHeaderClass!}">
<div id="kc-header-wrapper" class="${properties.kcHeaderWrapperClass!}">${kcSanitize(msg("loginTitleHtml",(realm.displayNameHtml!'')))?no_esc}</div>
</div>
-->
<div class="${properties.kcFormCardClass!} <#if displayWide>${properties.kcFormCardAccountClass!}</#if>">
<div style="${properties.logoHeaderStyle!}">
<div>
<#if client?? && client.getClientId()!='account'>
<a href="<#if client.getBaseUrl()?has_content>${client.getBaseUrl()}<#else>${"https://" + client.getClientId()}</#if>">
<#if properties.logoSrc?has_content>
<img class="img-fluid float-left" alt="${properties.logoAlt!}" src="${properties.logoSrc!}" style="${properties.logoStyle!}">
<#else>
<h1>
<#if client.getName()?has_content && client.getName()?starts_with("${")>${kcSanitize(msg(client.getName()?keep_after("{")?keep_before("}")))}
<#else>${(client.getName()!client.getClientId()!"undefined client")?capitalize?keep_before('.')}</#if>
</h1>
</#if>
</a>
</#if>
</div>
<#if properties.infrastructureLogo?has_content && properties.infrastructureLogo='yes'>
<div>
<a target="_blank" href="http://www.d4science.org">
<img class="img-fluid float-right" alt="D4Science Infrastructure" src="${url.resourcesPath}/img/PoweredByD4Science.png" style="${properties.infrastructureLogoStyle!}">
</a>
</div>
</#if>
</div>
<header class="${properties.kcFormHeaderClass!}">
<#if realm.internationalizationEnabled && locale.supported?size gt 1>
<div id="kc-locale">
<div id="kc-locale-wrapper" class="${properties.kcLocaleWrapperClass!}">
<div class="kc-dropdown" id="kc-locale-dropdown">
<a href="#" id="kc-current-locale-link">${locale.current}</a>
<ul>
<#list locale.supported as l>
<li class="kc-dropdown-item"><a href="${l.url}">${l.label}</a></li>
</#list>
</ul>
</div>
</div>
</div>
</#if>
<#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
<#if displayRequiredFields>
<div class="${properties.kcContentWrapperClass!}">
<div class="${properties.kcLabelWrapperClass!} subtitle">
<span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
</div>
<div class="col-md-10">
<h1 id="kc-page-title"><#nested "header"></h1>
</div>
</div>
<#else>
<h1 id="kc-page-title"><#nested "header"></h1>
</#if>
<#else>
<#if displayRequiredFields>
<div class="${properties.kcContentWrapperClass!}">
<div class="${properties.kcLabelWrapperClass!} subtitle">
<span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
</div>
<div class="col-md-10">
<#nested "show-username">
<div class="${properties.kcFormGroupClass!}">
<div id="kc-username">
<label id="kc-attempted-username">${auth.attemptedUsername}</label>
<a id="reset-login" href="${url.loginRestartFlowUrl}">
<div class="kc-login-tooltip">
<i class="${properties.kcResetFlowIcon!}"></i>
<span class="kc-tooltip-text">${msg("restartLoginTooltip")}</span>
</div>
</a>
</div>
</div>
</div>
</div>
<#else>
<#nested "show-username">
<div class="${properties.kcFormGroupClass!}">
<div id="kc-username">
<label id="kc-attempted-username">${auth.attemptedUsername}</label>
<a id="reset-login" href="${url.loginRestartFlowUrl}">
<div class="kc-login-tooltip">
<i class="${properties.kcResetFlowIcon!}"></i>
<span class="kc-tooltip-text">${msg("restartLoginTooltip")}</span>
</div>
</a>
</div>
</div>
</#if>
</#if>
</header>
<div id="kc-content">
<div id="kc-content-wrapper">
<#-- App-initiated actions should not see warning messages about the need to complete the action -->
<#-- during login. -->
<#if displayMessage && message?has_content && (message.type != 'warning' || !isAppInitiatedAction??)>
<div class="alert alert-${message.type}">
<#if message.type = 'success'><span class="${properties.kcFeedbackSuccessIcon!}"></span></#if>
<#if message.type = 'warning'><span class="${properties.kcFeedbackWarningIcon!}"></span></#if>
<#if message.type = 'error'><span class="${properties.kcFeedbackErrorIcon!}"></span></#if>
<#if message.type = 'info'><span class="${properties.kcFeedbackInfoIcon!}"></span></#if>
<span class="kc-feedback-text">${kcSanitize(message.summary)?no_esc}</span>
</div>
</#if>
<#nested "form">
<#if auth?has_content && auth.showTryAnotherWayLink() && showAnotherWayIfPresent>
<form id="kc-select-try-another-way-form" action="${url.loginAction}" method="post" <#if displayWide>class="${properties.kcContentWrapperClass!}"</#if>>
<div <#if displayWide>class="${properties.kcFormSocialAccountContentClass!} ${properties.kcFormSocialAccountClass!}"</#if>>
<div class="${properties.kcFormGroupClass!}">
<input type="hidden" name="tryAnotherWay" value="on" />
<a href="#" id="try-another-way" onclick="document.forms['kc-select-try-another-way-form'].submit();return false;">${msg("doTryAnotherWay")}</a>
</div>
</div>
</form>
</#if>
<#if displayInfo>
<div id="kc-info" class="${properties.kcSignUpClass!}">
<div id="kc-info-wrapper" class="${properties.kcInfoAreaWrapperClass!}">
<#nested "info">
</div>
</div>
</#if>
</div>
</div>
<footer style="${properties.footerStyle!}">
<div>
<a href="${properties.linkTerms!}">Terms of Use</a> |
<a href="${properties.linkCookies!'#'}">Cookies Policy</a> |
<a href="${properties.linkPrivacy!'#'}" target="_blank">Privacy Policy</a> |
<#if properties.linkProject?has_content><a href="${properties.linkProject!}" target="_blank">${properties.descrProject!}</a></#if>
</div>
<#if properties.ECLogo?has_content && properties.ECLogo='yes'>
<div style="display: flex; padding-top: 10px; justify-content: space-between;">
<#if properties.footerRow?has_content><div>${kcSanitize(properties.footerRow)?no_esc}</div></#if>
<div style="align-self: center;">
<a href="http://ec.europa.eu/programmes/horizon2020/" target="_blank">
<img class="float-right" alt="${properties.ECLogoAlt!}" src="${url.resourcesPath}/img/logo-ec.jpg" style="${properties.ECLogoStyle!}">
</a>
</div>
</div>
<#else>
<#if properties.footerRow?has_content><div style="padding-top: 10px;">${kcSanitize(properties.footerRow)?no_esc}</div></#if>
</#if>
</footer>
</div><!-- end form card -->
</div><!-- end login -->
</div><!-- end content -->
</body>
</html>
</#macro>

View File

@ -0,0 +1,26 @@
<#import "template.ftl" as layout>
<@layout.registrationLayout displayMessage=false displayWide=true; section>
<#if section = "header">
${msg("termsTitle")}
<#elseif section = "form">
<div id="kc-terms-text" style="max-height: 40vh; overflow-y: auto; padding: 0 10px 10px 0;">
<#include "terms.html" parse=false>
</div>
<div style="text-align: right; font-weight: bold; font-variant: small-caps;"><p>${msg("termsAcceptMsg")}</p></div>
<form class="form-actions" action="${url.loginAction}" method="POST">
<input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="accept" id="kc-accept" type="submit" value="${msg("doAccept")}" disabled />
<input class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="cancel" id="kc-decline" type="submit" value="${msg("doDecline")}"/>
</form>
<div class="clearfix"></div>
<script type="text/javascript">
document.getElementById("kc-terms-text").addEventListener("scroll", checkKcTermsScrollHeight, false);
function checkKcTermsScrollHeight(){
var kcTermsTextElement = document.getElementById("kc-terms-text")
if ((kcTermsTextElement.scrollTop + kcTermsTextElement.offsetHeight + 5) >= kcTermsTextElement.scrollHeight){
document.getElementById("kc-accept").disabled = false;
}
}
</script>
</#if>
</@layout.registrationLayout>

View File

@ -0,0 +1,143 @@
<div>
<p align="right" class="MsoNormal" style="text-align: right"><strong><span lang="EN-GB">Last revised on December 10<sup>th</sup>, 2019 </span></strong></p>
<h2 class="MsoSubtitle"><strong><span lang="EN-GB" style="font-family: &amp; quot; Calibri Light&amp;quot; , sans-serif; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: &amp;quot; Times New Roman&amp;quot;; mso-bidi-theme-font: major-bidi">Disclaimer</span></strong></h2>
<p class="MsoNormal"><span lang="EN-GB">This Gateway is operated by D4Science.org. Some of the technologies, services, and procedures, hereafter referred as Content of the Gateway, powering it have been produced with the co-funding of the European Commission. The content of the Gateway is the sole responsibility of the D4Science.org Team and cannot be considered to reflect the views of the European Commission.</span></p>
<p class="MsoNormal"><span lang="EN-GB">Information and content accessible through the Gateway are provided on an "as is" and "as available" basis. The D4Science.org Team makes every effort to ensure, but does not guarantee, the accuracy, completeness or authenticity of the information on this Gateway. The D4Science.org Team reserves the right to alter, limit or discontinue any part of this service at its discretion. Under no circumstances shall the D4Science.org Team be liable for any loss, damage, liability or expense suffered that is claimed to result from the use of information posted on this site or through its web services, including without limitation, any fault, error, omission, interruption or delay.</span></p>
<p class="MsoNormal"><span lang="EN-GB">Hyperlinks to non-D4Science.org websites do not imply any official endorsement of or responsibility on the part of D4Science.org for the opinions, ideas, content or products presented at these locations, or guarantee the validity of the information provided. The sole purpose of links to non-D4Science.org sites is to indicate further information available on related topics. The information is provided on the basis that users accessing this Gateway assume responsibility for assessing its relevance, accuracy and suitability for application.</span></p>
<h2 class="MsoSubtitle"><strong><span lang="EN-GB" style="font-family: &amp; quot; Calibri Light&amp;quot; , sans-serif; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: &amp;quot; Times New Roman&amp;quot;; mso-bidi-theme-font: major-bidi">Copyright</span></strong></h2>
<p class="MsoNormal"><span lang="EN-GB">The content and information made available through this Gateway are available under terms described in the metadata accompanying each product (e.g. “license” or "constraints" field). Except where otherwise noted (i.e. in case of primary requirement to comply with the content providers policy) this is the <a href="http://creativecommons.org/"><b style="mso-bidi-font-weight: normal"><span style="color: #1155CC">Creative Commons License</span></b></a>. </span></p>
<p class="MsoNormal"><span lang="EN-GB">All derivative products produced and made publicly available through this Gateway are licensed under the <a href="http://creativecommons.org/licenses/by-sa/3.0/"><b style="mso-bidi-font-weight: normal"><span style="mso-fareast-font-family: Arial; mso-bidi-font-family: Arial">Creative Commons License</span></b> <b style="mso-bidi-font-weight: normal">CC BY-SA</b></a><span class="MsoHyperlink"><b style="mso-bidi-font-weight: normal"> </b></span>except where otherwise noted. </span></p>
<h2 class="MsoSubtitle"><strong><span lang="EN-GB" style="font-family: &amp; quot; Calibri Light&amp;quot; , sans-serif; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: &amp;quot; Times New Roman&amp;quot;; mso-bidi-theme-font: major-bidi">How to Cite or Acknowledge D4Science</span></strong></h2>
<p class="MsoNormal"><span lang="EN-GB">Any work produced by making use of assets made available by the D4Science infrastructure should acknowledge the support received and give credits. Please include the following reference:&nbsp;</p>
<p class="MsoNormal">
<span id="docs-internal-guid-6eb89756-7fff-022a-6344-d9f2d198ad4e" style="font-style:italic;">M. Assante et al. (2019) Enacting open science by D4Science. Future Gener. Comput. Syst. 101: 555-563
<a href="https://doi.org/10.1016/j.future.2019.05.063" target="_blank">10.1016/j.future.2019.05.063</a>
</span>
</p>
<p class="MsoNormal">Furthermore, if you wish to cite / acknowledge a A Virtual Research Environment, a Service, a Dataset or Method please refer to the following
<strong><a href="https://www.d4science.org/how-to-cite-or-acknowledge" target="_blank">table</a></strong>.
</p>
<h2 class="MsoSubtitle"><strong><span lang="EN-GB" style="font-family: &amp; quot; Calibri Light&amp;quot; , sans-serif; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: &amp;quot; Times New Roman&amp;quot;; mso-bidi-theme-font: major-bidi">Your Agreement to the Terms</span></strong></h2>
<p class="MsoNormal"><span lang="EN-GB">YOUR ACCESS OR USE OF THE GATEWAY, A VIRTUAL RESEARCH ENVIRONMENT OR A SERVICE IN ANY WAY SIGNIFIES THAT YOU HAVE READ, UNDERSTAND AND AGREE TO BE BOUND BY THE TERMS.</span></p>
<p class="MsoNormal"><span lang="EN-US" style="mso-ansi-language: EN-US">Our Services are very diverse, so additional terms or requirements apply. Additional terms are available with the relevant Services, and those additional terms become part of your agreement with us if you use those Services.</span></p>
<p class="MsoNormal"><span lang="EN-GB">By accessing or using the Gateway, a Virtual Research Environment or a Service you also declare that you have the legal authority to accept the Terms on behalf of yourself and any party you represent in connection with your use of the Gateway, a Virtual Research Environment or a Service. If you do not agree to the Terms, you are not authorized to use the Gateway, a Virtual Research Environment or a Service. </span></p>
<p class="MsoNormal"><strong>Please read them carefully.</strong></p>
</div>
&nbsp;
<div class="WordSection2">
<h1><strong><span lang="EN-GB" style="font-family: &amp; quot; Calibri Light&amp;quot; , sans-serif; mso-ascii-theme-font: major-latin; mso-hansi-theme-font: major-latin; mso-bidi-font-family: &amp;quot; Times New Roman&amp;quot;; mso-bidi-theme-font: major-bidi">Gateway </span></strong></h1>
<p class="MsoNormal"><span lang="EN-GB">Any Gateway exploiting resources of the D4Science Infrastructure and operated by D4Science.org is the access point to products and services identified by the community requesting it. </span></p>
<p class="MsoNormal"><span lang="EN-GB">Upon registration to the <b>Gateway Service</b>, the user can immediately use the storage space via the <b style="mso-bidi-font-weight: normal">Workspace Service</b>, the&nbsp; </span><b><span lang="EN-US" style="mso-ansi-language: EN-US">Social Netwroking Collaborative Platform </span></b><span lang="EN-US" style="mso-ansi-language: EN-US">including the </span><b style="mso-bidi-font-weight: normal"><i><span lang="EN-GB">Email Service</span></i></b><span lang="EN-GB"> to send/receive content <span style="mso-spacerun: yes">&nbsp;</span>to other registered users, the <b style="mso-bidi-font-weight: normal"><i>Social Service</i></b> to share and read news and posts with your connections and the <b style="mso-bidi-font-weight: normal"><i>Notification</i> <i>Service</i></b> for user notifications, and the <b style="mso-bidi-font-weight: normal">Catalogue Service</b> to browse available datasets, methods, and services therein published. You can also apply to one or more moderated or public <b style="mso-bidi-font-weight: normal">Virtual Research Environments</b> offering one or more additional services. </span></p>
<p class="MsoNormal"><span lang="EN-GB">All the Services made accessible through this Gateway are also accessible through APIs by specifying the secure token generated with the registration and specialised for each Virtual Research Environment the user is member of. Starting from January 1<sup>st</sup> 2020 the APIs are exploitable only by using the secure and encrypted communication protocol over a computer network, HTTPS, while the support for the deprecated communication protocol over a computer network, HTTP, is definitely terminated December 31<sup>st</sup> 2019. </span></p>
<p class="MsoNormal"><span lang="EN-GB">You own the information, content, and method you provide to the D4Science Infrastructure through this Gateway under this Agreement, and may request its deletion at any time, unless you have shared information content, or method with others and they have not deleted it, or it was copied or stored by other users. Additionally, you grant D4Science.org a nonexclusive, worldwide, assignable, sublicensable, fully paid up and royalty-free right to us to copy, prepare derivative works of, improve, distribute, publish, remove, retain, add, process, analyse, and use in any way now known or in the future discovered, any information, content, or method you explicitly share or publish, directly or indirectly to D4Science.org, including, but not limited to, any user generated content, techniques or data to the services without any further consent, notice and/or compensation to you or to any third parties to </span><span lang="EN-US" style="mso-ansi-language: EN-US">serve the purpose of providing the service required by the User</span><span lang="EN-GB">. Any information you submit to us is at your own risk of loss as noted in the following sections of this Agreement.</span></p>
<p class="MsoNormal"><span lang="EN-GB">By sharing information, content, or method to us, you represent and warrant that you are entitled to share the information, content, or method and that the information, content, or method is accurate, not confidential, and not in violation of any contractual restrictions or other third-party rights. </span></p>
<p class="MsoNormal"><span lang="EN-GB">You must promptly notify the D4Science.org Team of any breach of security related to the Services, including but not limited to unauthorized use of your password or account. To help ensure the security of your password or account, please sign out from your account at the end of each session.</span></p>
<p class="MsoNormal"><span lang="EN-GB">The D4Science.org Team, hereafter referred ad D4Science.org, may terminate your account in accordance with the terms of service if you fail to login to your account for a period of SIX months. Moreover, if you are found to be in violation of our policies at any time, as determined by the D4Science.org in its sole discretion, we may warn you or suspend or terminate your account.</span></p>
<div align="center">
<table border="1" cellpadding="0" cellspacing="0" class="MsoTable15List3Accent1" style="border-collapse: collapse; border: none; mso-border-alt: solid #4472C4 .5pt; mso-border-themecolor: accent1; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt">
<tbody>
<tr style="mso-yfti-irow: -1; mso-yfti-firstrow: yes; mso-yfti-lastfirstrow: yes">
<td style="width: 63.55pt; border-top: solid #4472C4 1.0pt; mso-border-top-themecolor: accent1; border-left: solid #4472C4 1.0pt; mso-border-left-themecolor: accent1; border-bottom: none; border-right: none; mso-border-top-alt: solid #4472C4 .5pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4472C4 .5pt; mso-border-left-themecolor: accent1; background: #4472C4; mso-background-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="85">
<h2 align="center" style="margin-top: 0cm; text-align: center; mso-outline-level: 2; mso-yfti-cnfc: 517"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-US" style="font-size: 9.0pt; color: white; mso-themecolor: background1; mso-ansi-language: EN-US; font-weight: normal">Action</span></span></span></h2>
</td>
<td style="width: 434.55pt; border-top: solid #4472C4 1.0pt; mso-border-top-themecolor: accent1; border-left: none; border-bottom: none; border-right: solid #4472C4 1.0pt; mso-border-right-themecolor: accent1; mso-border-top-alt: solid #4472C4 .5pt; mso-border-top-themecolor: accent1; mso-border-right-alt: solid #4472C4 .5pt; mso-border-right-themecolor: accent1; background: #4472C4; mso-background-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="579">
<h2 align="center" style="margin-top: 0cm; text-align: center; mso-outline-level: 2; mso-yfti-cnfc: 1"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt; color: white; mso-themecolor: background1; font-weight: normal">Conditions of use</span></span></span></h2>
</td>
</tr>
<tr style="mso-yfti-irow: 0">
<td style="width: 63.55pt; border: solid #4472C4 1.0pt; mso-border-themecolor: accent1; border-right: none; mso-border-top-alt: solid #4472C4 .5pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4472C4 .5pt; mso-border-left-themecolor: accent1; mso-border-bottom-alt: solid #4472C4 .5pt; mso-border-bottom-themecolor: accent1; background: white; mso-background-themecolor: background1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="85">
<div style="margin-top: 0cm; mso-outline-level: 2; mso-yfti-cnfc: 68"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-US" style="font-size: 9.0pt; mso-ansi-language: EN-US; font-weight: normal">Posting Content or Method</span></span></span></div>
</td>
<td style="width: 434.55pt; border: solid #4472C4 1.0pt; mso-border-themecolor: accent1; border-left: none; mso-border-top-alt: solid #4472C4 .5pt; mso-border-top-themecolor: accent1; mso-border-bottom-alt: solid #4472C4 .5pt; mso-border-bottom-themecolor: accent1; mso-border-right-alt: solid #4472C4 .5pt; mso-border-right-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="579">
<p class="MsoNormal" style="margin-top: 0cm; mso-yfti-cnfc: 64"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">You can post content or method to any service made accessible through this Gateway only if (a) you created and own the rights to the content or method or you have the owners express permission to post the content or method; and (b) the content or method does not infringe any other persons or entitys rights (including the copyrights, trademarks, or privacy rights) or violate any applicable laws, this Terms of Use, Privacy Policy, our Community Best Practices, or any other posted policies. D4Science.org can remove content or method for any infringing reason.</span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm; mso-yfti-cnfc: 64"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">When you use a service to upload content or register a method into a VRE, you retain the irrevocable, exclusive, worldwide right and license to use, reproduce, modify, display, remix, re-distribute, create derivative works, and syndicate your content or method in any medium and through any service. Only where you have specifically shared, or used a specialized service for sharing content, will your content become part of a derivative work to be licensed under a schema selected by the owner. </span></span></span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 1">
<td style="width: 63.55pt; border: none; border-left: solid #4472C4 1.0pt; mso-border-left-themecolor: accent1; mso-border-left-alt: solid #4472C4 .5pt; mso-border-left-themecolor: accent1; background: white; mso-background-themecolor: background1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="85">
<div style="margin-top: 0cm; mso-outline-level: 2; mso-yfti-cnfc: 4"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-US" style="font-size: 9.0pt; mso-ansi-language: EN-US; font-weight: normal">Sharing Content or Method</span></span></span></div>
</td>
<td style="width: 434.55pt; border: none; border-right: solid #4472C4 1.0pt; mso-border-right-themecolor: accent1; mso-border-right-alt: solid #4472C4 .5pt; mso-border-right-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="579">
<p class="MsoNormal" style="margin-top: 0cm"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">D4Science.org offers sharing and publication at different levels: within a VRE, among different VREs and by publication to data repositories that may be accessible to external users. </span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt; mso-fareast-font-family: Arial; mso-bidi-font-family: Arial; color: black">Each shared content is associated to a copyright license.</span></span></span><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt"> A </span></span></span><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt; mso-fareast-font-family: Arial; mso-bidi-font-family: Arial; color: black">CC</span></span></span><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt"> BY-SA</span></span></span><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt; mso-fareast-font-family: Arial; mso-bidi-font-family: Arial; color: black"> license</span></span></span><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt"> is proposed if the dataset is obtained with a mash up process from different sources (a true derivative product), any other license (not technically supported by the D4Science Infrastructure) in case of unaltered product shared with other Users/VREs. In both cases the metadata must be filled (if not automatically compiled) and a preferred citation must be indicated. </span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">You are responsible for any content or method you post to our Services and the consequences of sharing such content or method with others or the general public. This includes, for example, any personal information, any confidential data or any unofficial data. D4Science.org is not responsible for the consequences of sharing or posting any personal or other information on its services.</span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">When you use a Service that allows users to share, transform, readapt, modify, or combine the content or method with other content or methods, you grant D4Science.org and our Users a non-exclusive, royalty free, worldwide right and license to [use, reproduce, modify, display, remix, perform, distribute, redistribute, adapt, promote, create derivative works, and syndicate] your content or method [in any medium and through any form of technology or distribution] and to permit any derivative works to be licensed under these same license terms.</span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">Any user accessing shared content must behave according to the copyright license of the dataset. However, the D4Science Infrastructure does not control or audit access to and / or audit use of shared content. It can therefore not impose a shared policy, but can encourage sharing according to best practices. </span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">Sharing content or method within the D4Science infrastructure (i.e. sharing through one or more VREs) will make them accessible only to authorized users, and cannot be accessed from outside.<span style="mso-spacerun: yes">&nbsp; </span> </span></span></span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 2">
<td style="width: 63.55pt; border: solid #4472C4 1.0pt; mso-border-themecolor: accent1; border-right: none; mso-border-top-alt: solid #4472C4 .5pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4472C4 .5pt; mso-border-left-themecolor: accent1; mso-border-bottom-alt: solid #4472C4 .5pt; mso-border-bottom-themecolor: accent1; background: white; mso-background-themecolor: background1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="85">
<div style="margin-top: 0cm; mso-outline-level: 2; mso-yfti-cnfc: 68"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-US" style="font-size: 9.0pt; mso-ansi-language: EN-US; font-weight: normal">Publishing Content </span></span></span></div>
</td>
<td style="width: 434.55pt; border: solid #4472C4 1.0pt; mso-border-themecolor: accent1; border-left: none; mso-border-top-alt: solid #4472C4 .5pt; mso-border-top-themecolor: accent1; mso-border-bottom-alt: solid #4472C4 .5pt; mso-border-bottom-themecolor: accent1; mso-border-right-alt: solid #4472C4 .5pt; mso-border-right-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="579">
<p class="MsoNormal" style="margin-top: 0cm; mso-yfti-cnfc: 64"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">The VRE authorized Users can publish content and make it available to the public exposing to general view with no restrictions except for a registration procedure that may be required. Each published set of content is associated to a copyright license. <span style="mso-spacerun: yes">&nbsp;</span>Published content can be accessed by the general public through this Gateway and through dedicated web applications (e.g. web services). </span></span></span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 3">
<td style="width: 63.55pt; border: none; border-left: solid #4472C4 1.0pt; mso-border-left-themecolor: accent1; mso-border-left-alt: solid #4472C4 .5pt; mso-border-left-themecolor: accent1; background: white; mso-background-themecolor: background1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="85">
<div style="margin-top: 0cm; mso-outline-level: 2; mso-yfti-cnfc: 4"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-US" style="font-size: 9.0pt; mso-ansi-language: EN-US; font-weight: normal">Secondary Use of the Content</span></span></span></div>
</td>
<td style="width: 434.55pt; border: none; border-right: solid #4472C4 1.0pt; mso-border-right-themecolor: accent1; mso-border-right-alt: solid #4472C4 .5pt; mso-border-right-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="579">
<p class="MsoNormal" style="margin-top: 0cm"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">Data accessed through this Gateway do not, and should not, include controls over its end use. However, the content owner or authoritative source for the content must retain version control of content accessed. </span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">Once the content has been downloaded from the Gateway, D4Science.org cannot vouch for their quality and timeliness. D4Science.org cannot vouch for any analyses conducted with the content retrieved from the Gateway.</span></span></span></p>
</td>
</tr>
<tr style="mso-yfti-irow: 4; mso-yfti-lastrow: yes">
<td style="width: 63.55pt; border: solid #4472C4 1.0pt; mso-border-themecolor: accent1; border-right: none; mso-border-top-alt: solid #4472C4 .5pt; mso-border-top-themecolor: accent1; mso-border-left-alt: solid #4472C4 .5pt; mso-border-left-themecolor: accent1; mso-border-bottom-alt: solid #4472C4 .5pt; mso-border-bottom-themecolor: accent1; background: white; mso-background-themecolor: background1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="85">
<div style="margin-top: 0cm; mso-outline-level: 2; mso-yfti-cnfc: 68"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-US" style="font-size: 9.0pt; mso-ansi-language: EN-US; font-weight: normal">Derivative Work and Data Citation </span></span></span></div>
</td>
<td style="width: 434.55pt; border: solid #4472C4 1.0pt; mso-border-themecolor: accent1; border-left: none; mso-border-top-alt: solid #4472C4 .5pt; mso-border-top-themecolor: accent1; mso-border-bottom-alt: solid #4472C4 .5pt; mso-border-bottom-themecolor: accent1; mso-border-right-alt: solid #4472C4 .5pt; mso-border-right-themecolor: accent1; padding: 0cm 5.4pt 0cm 5.4pt" valign="top" width="579">
<p class="MsoNormal" style="margin-top: 0cm; mso-yfti-cnfc: 64"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">Derivative work should only be produced by complying with the terms and conditions established in the license of the used content. </span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm; mso-yfti-cnfc: 64"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">The derivative work is owned by the legitimate copyright holder identified among the contributors co-owning the new product and is the contact point for any use, re-use/re-distribute request.</span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm; mso-yfti-cnfc: 64"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">Derivative work may contain content retrieved from the D4Science Infrastructure.</span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm; mso-yfti-cnfc: 64"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">Every content should include in its metadata at least a preferred citation, a reference to the infrastructure source dataset and its generation date, and the date that content was accessed or retrieved from the Gateway or any of its services. If the content was a composition of multiple datasets with different citations, the owner of the content should have added that to the relevant metadata. </span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm; mso-yfti-cnfc: 64"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">If such derivative work is produced through VREs, the D4Science Infrastructure generates a default provenance metadata, which matches references to sources used for the derivative work and their respective citations.</span></span></span></p>
<p class="MsoNormal" style="margin-top: 0cm; mso-yfti-cnfc: 64"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB" style="font-size: 9.0pt">You must clearly state that “D4Science.org cannot vouch for the analyses derived from this content after it has been retrieved from the D4Science Infrastructure”.</span></span></span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p align="center" class="MsoCaption" style="text-align: center"><span style="mso-bookmark: _Toc19196483"><span style="mso-bookmark: _Toc20313381"><span lang="EN-GB">Table 1: Conditions of Use Summary Table</span></span></span></p>
</div>

View File

@ -0,0 +1,34 @@
parent=keycloak
import=common/keycloak
styles=node_modules/patternfly/dist/css/patternfly.min.css node_modules/patternfly/dist/css/patternfly-additions.min.css lib/zocial/zocial.css css/d4science.css
#titleTag=
#favicon=https://services.d4science.org/favicon.ico
contentBgImg=img/color-triangles.png
#contentStyle=background: url("https://url-of-background-img");
logoHeaderStyle=display: flex; justify-content: space-between; width: 100%;
#logoSrc=
logoAlt=gCubeDev Gateway
logoStyle=height: 60px;
infrastructureLogo=yes
infrastructureLogoStyle=height: 40px;
footerStyle=display: flex; flex-direction: column; width: 100%; padding-top: 10px;
#linkTerms=
#linkCookies=
linkPrivacy=https://www.iubenda.com/privacy-policy/441050
#linkProject=
descrProject=Project Home
ECLogo=no
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=Project has received funding from the European Union's Horizon programme ...
#kcLogoIdP-eosc-oidc=

View File

@ -0,0 +1,52 @@
#parent= the parent then defaults to d4science
#titleTag= the page title is mandatory
#favicon= absolute url to favicon defaults to https://services.d4science.org/favicon.ico
#contentBgImg= relative path to bg image defaults to img/color-triangles.png
#contentStyle= define custom styles. Note: use this for overriding BG image when pointing to external resource such as background: url("https://url-of-background-img"i no-repeat center center fixed); background-size: cover;
#logoHeaderStyle= custom style for logoHeader defaults to display: flex; justify-content: space-between; width: 100%;
#logoSrc= url for logo image is mandatory
#logoAlt= alt text for logo gCubeDev Gateway
#logoStyle= custom style for logo defautls to height: 60px;
#infrastructureLogo= yes (default) if "powered for d4science has to be included". no otherwise
#infrastructureLogoStyle= custom style for infrastructureLogo defaults to height: 40px;
#footerStyle= custom style for footer defaults to: display: flex; flex-direction: column; width: 100%; padding-top: 10px;
#linkTerms= absolute url to terms of use
#linkCookies= absolute link to cookie policy
#linkPrivacy= absolute link to privacy policiy defaults to: https://www.iubenda.com/privacy-policy/441050
#linkProject= absolute link to project home site
#descrProject= description of project
#ECLogo= include EC logo defaults to no
#ECLogoStyle= custom style for EC logo defaults to max-width: 35px;
#ECLogoAlt= alt text for EC logo defaults to EU H2020 programme
#footerRow= custom HTML text for footer content
parent=d4science
titleTag=HDN Gateway
favicon=https://dante.d4science.org/generic-configurable-theme/images/favicon.ico
logoSrc=https://dante.d4science.org/image/layout_set_logo?img_id=213136654&t=1610442043643
logoAlt=HDN Gateway
logoStyle=height: 50px;
infrastructureLogo=yes
linkTerms=https://dante.d4science.org/terms-of-use
linkCookies=https://dante.d4science.org/cookie-policy
linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=
ECLogo=no
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=Hypermedia Dante Network (HDN) is a National Project funded by the Italian National Research project (PRIN) funded by the Italian Ministry of Education, University and Research (MIUR)

View File

@ -0,0 +1,53 @@
#parent= the parent then defaults to d4science
#titleTag= the page title is mandatory
#favicon= absolute url to favicon defaults to https://services.d4science.org/favicon.ico
#contentBgImg= relative path to bg image defaults to img/color-triangles.png
#contentStyle= define custom styles. Note: use this for overriding BG image when pointing to external resource such as background: url("https://url-of-background-img"i no-repeat center center fixed); background-size: cover;
#logoHeaderStyle= custom style for logoHeader defaults to display: flex; justify-content: space-between; width: 100%;
#logoSrc= url for logo image is mandatory
#logoAlt= alt text for logo gCubeDev Gateway
#logoStyle= custom style for logo defautls to height: 60px;
#infrastructureLogo= yes (default) if "powered for d4science has to be included". no otherwise
#infrastructureLogoStyle= custom style for infrastructureLogo defaults to height: 40px;
#footerStyle= custom style for footer defaults to: display: flex; flex-direction: column; width: 100%; padding-top: 10px;
#linkTerms= absolute url to terms of use
#linkCookies= absolute link to cookie policy
#linkPrivacy= absolute link to privacy policiy defaults to: https://www.iubenda.com/privacy-policy/441050
#linkProject= absolute link to project home site
#descrProject= description of project
#ECLogo= include EC logo defaults to no
#ECLogoStyle= custom style for EC logo defaults to max-width: 35px;
#ECLogoAlt= alt text for EC logo defaults to EU H2020 programme
#footerRow= custom HTML text for footer content
parent=d4science
titleTag=DESIRA Gateway
favicon=https://desira.d4science.org/generic-configurable-theme/images/favicon.ico
logoSrc=https://desira.d4science.org/image/layout_set_logo?img_id=186037762&t=1610442043621
logoAlt=DESIRA Gateway
logoStyle=height: 50px;
infrastructureLogo=yes
linkTerms=https://desira.d4science.org/terms-of-use
linkCookies=https://desira.d4science.org/cookie-policy
linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=
descrProject=
ECLogo=yes
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=DESIRA is a Horizon 2020 project funded by the European Commission. The views and opinions expressed in this publication are the sole responsibility of the author and do not necessarily reflect the views of the European Commission

View File

@ -0,0 +1,32 @@
parent=d4science
#styles=
titleTag=gCube Snapshot Gateway - Sign in
favicon=https://dev4.d4science.org/generic-configurable-theme/images/favicon.ico
contentBgImg=img/color-triangles.png
#contentStyle=background: url("https://url-of-background-img");
#logoHeaderStyle=
logoSrc=https://dev4.d4science.org/image/company_logo?img_id=0&amp;t=1590160581995
logoAlt=gCube Snapshot Gateway
logoStyle=height: 50px;
infrastructureLogo=no
#infrastructureLogoStyle=
#footerStyle=
linkTerms=https://dev4.d4science.org/terms-of-use
linkCookies=https://dev4.d4science.org/cookie-policy
#linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=https://dev4.d4science.org
descrProject=Go to D4Science Gateway
ECLogo=no
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=

View File

@ -0,0 +1,52 @@
#parent= the parent then defaults to d4science
#titleTag= the page title is mandatory
#favicon= absolute url to favicon defaults to https://services.d4science.org/favicon.ico
#contentBgImg= relative path to bg image defaults to img/color-triangles.png
#contentStyle= define custom styles. Note: use this for overriding BG image when pointing to external resource such as background: url("https://url-of-background-img"i no-repeat center center fixed); background-size: cover;
#logoHeaderStyle= custom style for logoHeader defaults to display: flex; justify-content: space-between; width: 100%;
#logoSrc= url for logo image is mandatory
#logoAlt= alt text for logo gCubeDev Gateway
#logoStyle= custom style for logo defautls to height: 60px;
#infrastructureLogo= yes (default) if "powered for d4science has to be included". no otherwise
#infrastructureLogoStyle= custom style for infrastructureLogo defaults to height: 40px;
#footerStyle= custom style for footer defaults to: display: flex; flex-direction: column; width: 100%; padding-top: 10px;
#linkTerms= absolute url to terms of use
#linkCookies= absolute link to cookie policy
#linkPrivacy= absolute link to privacy policiy defaults to: https://www.iubenda.com/privacy-policy/441050
#linkProject= absolute link to project home site
#descrProject= description of project
#ECLogo= include EC logo defaults to no
#ECLogoStyle= custom style for EC logo defaults to max-width: 35px;
#ECLogoAlt= alt text for EC logo defaults to EU H2020 programme
#footerRow= custom HTML text for footer content
parent=d4science
titleTag=EOSC-Pillar Gateway
favicon=https://eosc-pillar.d4science.org/generic-configurable-theme/images/favicon.ico
logoSrc=https://eosc-pillar.d4science.org/image/layout_set_logo?img_id=193750956&t=1610442043626
logoAlt=EOSC-Pillar Gateway
logoStyle=height: 50px;background-color: lightgray;
infrastructureLogo=yes
linkTerms=https://eosc-pillar.d4science.org/terms-of-use
linkCookies=https://eosc-pillar.d4science.org/cookie-policy
linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=https://www.eosc-pillar.eu
ECLogo=yes
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=EOSC Pillar has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No. 857650. <br/>The views and opinions expressed in this publication are the sole responsibility of the author and do not necessarily reflect the views of the European Commission.

View File

@ -0,0 +1,52 @@
#parent= the parent then defaults to d4science
#titleTag= the page title is mandatory
#favicon= absolute url to favicon defaults to https://services.d4science.org/favicon.ico
#contentBgImg= relative path to bg image defaults to img/color-triangles.png
#contentStyle= define custom styles. Note: use this for overriding BG image when pointing to external resource such as background: url("https://url-of-background-img"i no-repeat center center fixed); background-size: cover;
#logoHeaderStyle= custom style for logoHeader defaults to display: flex; justify-content: space-between; width: 100%;
#logoSrc= url for logo image is mandatory
#logoAlt= alt text for logo gCubeDev Gateway
#logoStyle= custom style for logo defautls to height: 60px;
#infrastructureLogo= yes (default) if "powered for d4science has to be included". no otherwise
#infrastructureLogoStyle= custom style for infrastructureLogo defaults to height: 40px;
#footerStyle= custom style for footer defaults to: display: flex; flex-direction: column; width: 100%; padding-top: 10px;
#linkTerms= absolute url to terms of use
#linkCookies= absolute link to cookie policy
#linkPrivacy= absolute link to privacy policiy defaults to: https://www.iubenda.com/privacy-policy/441050
#linkProject= absolute link to project home site
#descrProject= description of project
#ECLogo= include EC logo defaults to no
#ECLogoStyle= custom style for EC logo defaults to max-width: 35px;
#ECLogoAlt= alt text for EC logo defaults to EU H2020 programme
#footerRow= custom HTML text for footer content
parent=d4science
titleTag=EOSC-Secretariat Gateway
favicon=https://eoscsecretariat.d4science.org/generic-configurable-theme/images/favicon.ico
logoSrc=https://eoscsecretariat.d4science.org/image/layout_set_logo?img_id=182778502&t=1610442043632
logoAlt=EOSC-Secretariat Gateway
logoStyle=height: 50px;
infrastructureLogo=yes
linkTerms=https://eoscsecretariat.d4science.org/terms-of-use
linkCookies=https://eoscsecretariat.d4science.org/cookie-policy
linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=https://www.eoscsecretariat.eu
ECLogo=yes
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=EOSCsecretariat.eu has received funding from the European Unions Horizon Programme call H2020-INFRAEOSC-2018-4, grant Agreement number 831644. <br/>The views and opinions expressed in this publication are the sole responsibility of the author and do not necessarily reflect the views of the European Commission.

View File

@ -0,0 +1,2 @@
parent=d4science

View File

@ -0,0 +1,2 @@
parent=d4science

View File

@ -0,0 +1,2 @@
parent=d4science

View File

@ -0,0 +1,28 @@
parent= d4science
titleTag=Gateway - Sign in
favicon=https://aginfra.d4science.org/generic-configurable-theme/images/favicon.ico
logoSrc=https://aginfra.d4science.org/image/layout_set_logo?img_id=26845094&t=1610388639499
logoAlt=AGINFRAPlus Gateway
logoStyle=height: 50px;
infrastructureLogo=no
linkTerms=https://aginfra.d4science.org/terms-of-use
linkCookies=https://aginfra.d4science.org/cookie-policy
linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=http://plus.aginfra.eu/
descrProject=
ECLogo=yes
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=AGINFRA PLUS receives funding from the European Unions Horizon 2020 research and innovation programme under grant agreement No. 731001 <br/> The views and opinions expressed in this website are the sole responsibility of the author and do not necessarily reflect the views of the European Commission.

View File

@ -0,0 +1,52 @@
#parent= the parent then defaults to d4science
#titleTag= the page title is mandatory
#favicon= absolute url to favicon defaults to https://services.d4science.org/favicon.ico
#contentBgImg= relative path to bg image defaults to img/color-triangles.png
#contentStyle= define custom styles. Note: use this for overriding BG image when pointing to external resource such as background: url("https://url-of-background-img"i no-repeat center center fixed); background-size: cover;
#logoHeaderStyle= custom style for logoHeader defaults to display: flex; justify-content: space-between; width: 100%;
#logoSrc= url for logo image is mandatory
#logoAlt= alt text for logo gCubeDev Gateway
#logoStyle= custom style for logo defautls to height: 60px;
#infrastructureLogo= yes (default) if "powered for d4science has to be included". no otherwise
#infrastructureLogoStyle= custom style for infrastructureLogo defaults to height: 40px;
#footerStyle= custom style for footer defaults to: display: flex; flex-direction: column; width: 100%; padding-top: 10px;
#linkTerms= absolute url to terms of use
#linkCookies= absolute link to cookie policy
#linkPrivacy= absolute link to privacy policiy defaults to: https://www.iubenda.com/privacy-policy/441050
#linkProject= absolute link to project home site
#descrProject= description of project
#ECLogo= include EC logo defaults to no
#ECLogoStyle= custom style for EC logo defaults to max-width: 35px;
#ECLogoAlt= alt text for EC logo defaults to EU H2020 programme
#footerRow= custom HTML text for footer content
parent=d4science
titleTag=GEMex Gateway
favicon=https://gemex.d4science.org/GEMex-site-theme/images/favicon.ico
logoSrc=https://gemex.d4science.org/image/layout_set_logo?img_id=14003058&t=1610442043637
logoAlt=GEMex Gateway
logoStyle=height: 50px;
infrastructureLogo=yes
linkTerms=https://gemex.d4science.org/terms-of-use
linkCookies=https://gemex.d4science.org/cookie-policy
linkPrivacy=https://www.iubenda.com/privacy-policy/441050
linkProject=http://www.gemex-h2020.eu/index.php
ECLogo=yes
ECLogoStyle=max-width: 35px;
ECLogoAlt=EU H2020 programme
footerRow=This project has received funding from the European Union's Horizon 2020 Framework Programme for Research and Innovation (H2020-LCE-2016-23) under grant agreement No. 727550. This publication/multimedia product/presentation reflects the views of the author, and the European Union cannot be held responsible for any use which might be made of the information contained therein.

Some files were not shown because too many files have changed in this diff Show More