forked from NextGraph/nextgraph-rs
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
421 lines
19 KiB
421 lines
19 KiB
<!--
|
|
// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
|
|
// All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0
|
|
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
|
|
// or the MIT license <LICENSE-MIT or http://opensource.org/licenses/MIT>,
|
|
// at your option. All files in the project carrying such
|
|
// notice may not be copied, modified, or distributed except
|
|
// according to those terms.
|
|
-->
|
|
|
|
<script>
|
|
import { Button } from "flowbite-svelte";
|
|
// @ts-ignore
|
|
import EULogo from "../assets/EU.svg?component";
|
|
// @ts-ignore
|
|
import Logo from "../assets/nextgraph.svg?component";
|
|
import { link, querystring } from "svelte-spa-router";
|
|
|
|
import { onMount } from "svelte";
|
|
let domain = import.meta.env.NG_ACCOUNT_DOMAIN;
|
|
const param = new URLSearchParams($querystring);
|
|
let ca = param.get("ca");
|
|
let go_back = true;
|
|
let wait = false;
|
|
|
|
let top;
|
|
const api_url = import.meta.env.PROD
|
|
? "api/v1/"
|
|
: "http://127.0.0.1:3031/api/v1/";
|
|
|
|
async function register() {
|
|
wait = true;
|
|
const opts = {
|
|
method: "get",
|
|
};
|
|
try {
|
|
const response = await fetch(api_url + "register/" + ca, opts);
|
|
|
|
const result = await response.json();
|
|
console.log("Result:", response.status, result); // 400 is error with redirect, 200 ok, 406 is error without known redirect
|
|
if (response.status == 406) {
|
|
await close();
|
|
} else if (response.status == 400) {
|
|
await close(result);
|
|
} else {
|
|
//console.log(result);
|
|
await success(result);
|
|
}
|
|
} catch (e) {
|
|
wait = false;
|
|
error = e.message;
|
|
}
|
|
}
|
|
|
|
async function close(result) {
|
|
// @ts-ignore
|
|
if (window.__TAURI__) {
|
|
go_back = false;
|
|
if (result) {
|
|
error = "Closing due to " + (result.error || "an error");
|
|
}
|
|
let window_api = await import("@tauri-apps/plugin-window");
|
|
let main = window_api.Window.getByLabel("main");
|
|
if (main) {
|
|
wait = true;
|
|
await main.emit("error", result);
|
|
} else {
|
|
await window_api.getCurrent().close();
|
|
}
|
|
} else {
|
|
if (result && result.url) {
|
|
error = "We are redirecting you...";
|
|
go_back = false;
|
|
window.location.href = result.url;
|
|
} else {
|
|
wait = true;
|
|
window.history.go(-1);
|
|
}
|
|
}
|
|
}
|
|
|
|
async function success(result) {
|
|
// @ts-ignore
|
|
if (window.__TAURI__) {
|
|
let window_api = await import("@tauri-apps/plugin-window");
|
|
let main = window_api.Window.getByLabel("main");
|
|
if (main) {
|
|
await main.emit("accepted", result);
|
|
} else {
|
|
await window_api.getCurrent().close();
|
|
}
|
|
} else {
|
|
window.location.href = result.url;
|
|
}
|
|
}
|
|
|
|
async function bootstrap() {}
|
|
let error;
|
|
|
|
onMount(() => bootstrap());
|
|
|
|
const accept = async (event) => {
|
|
await register();
|
|
};
|
|
const refuse = (event) => {
|
|
close();
|
|
};
|
|
</script>
|
|
|
|
{#if wait}
|
|
<div class=" max-w-6xl lg:px-8 mx-auto px-4 text-primary-700">
|
|
Please wait...
|
|
<svg
|
|
class="animate-spin mt-10 h-14 w-14 mx-auto"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
viewBox="0 0 24 24"
|
|
>
|
|
<circle
|
|
class="opacity-25"
|
|
cx="12"
|
|
cy="12"
|
|
r="10"
|
|
stroke="currentColor"
|
|
stroke-width="4"
|
|
/>
|
|
<path
|
|
class="opacity-75"
|
|
fill="currentColor"
|
|
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
/>
|
|
</svg>
|
|
</div>
|
|
{:else}
|
|
<main class="container3" bind:this={top}>
|
|
<div class="row">
|
|
<Logo class="logo block h-24" alt="NextGraph Logo" />
|
|
{#if domain == "nextgraph.eu"}
|
|
<EULogo
|
|
class="logo block h-20"
|
|
style="margin-top: 0.5em;"
|
|
alt="European Union Logo"
|
|
/>
|
|
{/if}
|
|
</div>
|
|
{#if error}
|
|
<div class=" max-w-6xl lg:px-8 mx-auto px-4 text-red-800">
|
|
<svg
|
|
class="animate-bounce mt-10 h-16 w-16 mx-auto"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="1.5"
|
|
viewBox="0 0 24 24"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"
|
|
/>
|
|
</svg>
|
|
|
|
<p class="max-w-xl md:mx-auto lg:max-w-2xl mb-5">
|
|
An error occurred while registering on this broker:<br />{error}
|
|
</p>
|
|
{#if go_back}
|
|
<button
|
|
on:click|once={close}
|
|
class="text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:ring-primary-700/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-700/55 mb-2"
|
|
>
|
|
Go back
|
|
</button>
|
|
{/if}
|
|
</div>
|
|
{:else}
|
|
{#if ca}
|
|
<div class=" max-w-6xl lg:px-8 mx-auto px-4">
|
|
<p class="max-w-xl md:mx-auto lg:max-w-2xl">
|
|
You would like to choose <b>{domain}</b> as your Broker Service
|
|
Provider.<br />Please read carefully the Terms of Service below,
|
|
before accepting them.
|
|
</p>
|
|
</div>
|
|
{/if}
|
|
<div
|
|
class="px-4 pt-5 mx-auto max-w-6xl lg:px-8 lg:pt-10 dark:bg-slate-800"
|
|
>
|
|
<div class="max-w-xl md:mx-auto sm:text-center lg:max-w-2xl">
|
|
<h2 class="pb-5 text-xl">{domain} Terms of Service</h2>
|
|
|
|
<ul class="mb-8 space-y-4 text-left text-gray-500 dark:text-gray-400">
|
|
{#if domain == "nextgraph.eu"}
|
|
<li class="flex space-x-3">
|
|
<svg
|
|
class="flex-shrink-0 w-5 h-5 text-green-500 dark:text-green-400"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="1.5"
|
|
viewBox="0 0 24 24"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="M20.893 13.393l-1.135-1.135a2.252 2.252 0 01-.421-.585l-1.08-2.16a.414.414 0 00-.663-.107.827.827 0 01-.812.21l-1.273-.363a.89.89 0 00-.738 1.595l.587.39c.59.395.674 1.23.172 1.732l-.2.2c-.212.212-.33.498-.33.796v.41c0 .409-.11.809-.32 1.158l-1.315 2.191a2.11 2.11 0 01-1.81 1.025 1.055 1.055 0 01-1.055-1.055v-1.172c0-.92-.56-1.747-1.414-2.089l-.655-.261a2.25 2.25 0 01-1.383-2.46l.007-.042a2.25 2.25 0 01.29-.787l.09-.15a2.25 2.25 0 012.37-1.048l1.178.236a1.125 1.125 0 001.302-.795l.208-.73a1.125 1.125 0 00-.578-1.315l-.665-.332-.091.091a2.25 2.25 0 01-1.591.659h-.18c-.249 0-.487.1-.662.274a.931.931 0 01-1.458-1.137l1.411-2.353a2.25 2.25 0 00.286-.76m11.928 9.869A9 9 0 008.965 3.525m11.928 9.868A9 9 0 118.965 3.525"
|
|
/>
|
|
</svg>
|
|
<span
|
|
>Our servers are located in Germany, and comply with the
|
|
GDPR and DSA regulations, to the extent that they concern us.</span
|
|
>
|
|
</li>
|
|
<li class="flex space-x-3">
|
|
<svg
|
|
class="flex-shrink-0 w-5 h-5 text-green-500 dark:text-green-400"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="1.5"
|
|
viewBox="0 0 24 24"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75 2.25 2.25 0 00-.1-.664m-5.8 0A2.251 2.251 0 0113.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0118 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3l1.5 1.5 3-3.75"
|
|
/>
|
|
</svg>
|
|
<span>As we do not store any personal information about you, GDPR is not directly applicable, but we do abide by GDPR regulations.<br/>
|
|
This broker only hosts encrypted data that is never published on the internet in any way. We therefor have no control over moderation and cannot be held liable for the plain-text version of the messages exchanged on this broker.<br/>
|
|
For any matter related to GDPR or DSA, please see our <a href="https://nextgraph.org/contact/" target="_blank">contact details here</a>. You can contact us in english, french, german and spanish.<br/>
|
|
We reserve the right to terminate service at any moment, without any given reason, as this service is in alpha version, and we do not have contractual relation with you. We do not know who you are and cannot contact you.</span>
|
|
</li>
|
|
{/if}
|
|
<li class="flex space-x-3">
|
|
<svg
|
|
class="flex-shrink-0 w-5 h-5 text-green-500 dark:text-green-400"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="1.5"
|
|
viewBox="0 0 24 24"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="M15.75 5.25a3 3 0 013 3m3 0a6 6 0 01-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1121.75 8.25z"
|
|
/>
|
|
</svg>
|
|
<span
|
|
>All the data you exchange with us while using this broker is
|
|
end-to-end encrypted and we do not have access to your
|
|
decryption keys, meaning that we cannot see the content of your
|
|
documents.</span
|
|
>
|
|
</li>
|
|
<li class="flex space-x-3">
|
|
<svg
|
|
class="flex-shrink-0 w-5 h-5 text-green-500 dark:text-green-400"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="1.5"
|
|
viewBox="0 0 24 24"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88"
|
|
/>
|
|
</svg>
|
|
<span
|
|
>We do not log any private information about you (nor IP, nor
|
|
country, nor statistics of any kind). Only your randomly generated UserId is kept,
|
|
together with the list of devices (ClientId) you use to connect
|
|
to the broker. We collect general purpose information about your
|
|
device (OS version, browser version, and if you use the app, the
|
|
version and date of last update). We do not have access to any
|
|
unique tracking identifier of your device (like Android MAID/AAID or
|
|
iPhone IDFA). We could nevertheless be asked by law enforcement
|
|
authorities, depending on the jurisdiction of the server, to log
|
|
the IP you use when connecting to the broker, and/or to provide
|
|
them with the encrypted content you have stored on our servers.
|
|
If you prefer to avoid that eventually, please refrain from any
|
|
illegal activity while using this broker.</span
|
|
>
|
|
</li>
|
|
<li class="flex space-x-3">
|
|
<svg
|
|
class="flex-shrink-0 w-5 h-5 text-green-500 dark:text-green-400"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="1.5"
|
|
viewBox="0 0 24 24"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
/>
|
|
</svg>
|
|
<span>
|
|
You can delete your account with us at any time by opening your NextGraph application, logging in,
|
|
and entering in the User Panel, then Accounts, then under Brokers "delete registration". Before deleting your account with us, make sure you register to another broker before, otherwise you will not be able to sync or share your data with any other users or devices</span
|
|
>
|
|
</li>
|
|
<li class="flex space-x-3">
|
|
<svg
|
|
class="flex-shrink-0 w-5 h-5 text-green-500 dark:text-green-400"
|
|
fill="none" stroke-width="1.5" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z"></path>
|
|
</svg>
|
|
<span>
|
|
Q: I heard that with NextGraph there will be no more ToS to accept. Why then are there some ToS here? <br/> A: You are right that with NextGraph we can do without ToS, when the user is connecting to a self-hosted broker. As this option is
|
|
not available yet, we only offer you to connect to our public Broker Service Provider for now, which needs some ToS to be accepted. Very soon more options will be available, but some users might still prefer using our brokers.
|
|
In any case, the ToS here are minimal and with end-to-end encryption, your data is unreadable to us anyway.</span
|
|
>
|
|
</li>
|
|
<li class="flex space-x-3">
|
|
<svg
|
|
class="flex-shrink-0 w-5 h-5 text-green-500 dark:text-green-400"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="1.5"
|
|
viewBox="0 0 24 24"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="M14.25 7.756a4.5 4.5 0 100 8.488M7.5 10.5h5.25m-5.25 3h5.25M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
|
|
/>
|
|
</svg>
|
|
<span
|
|
>Registration is free of charge. And it would be very nice of
|
|
you if you wanted to donate a small amount to help us cover the
|
|
fees we have to pay for operating the servers. {#if !window.__TAURI__}
|
|
Here is the donation link: <a
|
|
target="_blank"
|
|
href="https://nextgraph.org/donate"
|
|
>https://nextgraph.org/donate</a
|
|
>{:else}
|
|
You will find the link to donate in your app, by clicking on
|
|
the logo of NextGraph on the top-left corner.
|
|
{/if}
|
|
</span>
|
|
</li>
|
|
{#if !window.__TAURI__}
|
|
<li class="flex space-x-3">
|
|
<svg
|
|
class="flex-shrink-0 w-5 h-5 text-green-500 dark:text-green-400"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="1.5"
|
|
viewBox="0 0 24 24"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="M15 9h3.75M15 12h3.75M15 15h3.75M4.5 19.5h15a2.25 2.25 0 002.25-2.25V6.75A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25v10.5A2.25 2.25 0 004.5 19.5zm6-10.125a1.875 1.875 0 11-3.75 0 1.875 1.875 0 013.75 0zm1.294 6.336a6.721 6.721 0 01-3.17.789 6.721 6.721 0 01-3.168-.789 3.376 3.376 0 016.338 0z"
|
|
/>
|
|
</svg>
|
|
|
|
<span
|
|
>By agreeing to those terms, you allow this software to store
|
|
some personal data locally on this device, in localStorage.
|
|
This data contains your wallet and is never sent
|
|
to us. It only stays on this device or any other device where you will import your wallet.
|
|
If you delete this data without keeping a copy of
|
|
your wallet somewhere else, then access to your wallet and all its documents will be permanently lost.
|
|
</span>
|
|
</li>
|
|
{/if}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
{#if ca}
|
|
<div class="row mb-10">
|
|
<button
|
|
on:click|once={accept}
|
|
class="mr-5 text-white bg-primary-700 hover:bg-primary-700/90 focus:ring-4 focus:ring-primary-700/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-700/55 mb-2"
|
|
>
|
|
<svg
|
|
class="w-8 h-8 mr-2 -ml-1"
|
|
fill="none"
|
|
stroke="currentColor"
|
|
stroke-width="1.5"
|
|
viewBox="0 0 24 24"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
d="M19 7.5v3m0 0v3m0-3h3m-3 0h-3m-2.25-4.125a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zM4 19.235v-.11a6.375 6.375 0 0112.75 0v.109A12.318 12.318 0 0110.374 21c-2.331 0-4.512-.645-6.374-1.766z"
|
|
/>
|
|
</svg>
|
|
I accept
|
|
</button>
|
|
<button
|
|
on:click|once={refuse}
|
|
class="text-primary-700 bg-primary-100 hover:bg-primary-100/90 focus:ring-4 focus:ring-primary-100/50 font-medium rounded-lg text-lg px-5 py-2.5 text-center inline-flex items-center dark:focus:ring-primary-100/55 mr-2 mb-2"
|
|
>
|
|
I refuse
|
|
</button>
|
|
</div>
|
|
{/if}
|
|
{/if}
|
|
</main>
|
|
{/if}
|
|
|