Compare commits
5 Commits
hotfix/des
...
a1be189d40
Author | SHA1 | Date | |
---|---|---|---|
a1be189d40 | |||
beb6c35de9
|
|||
5132f41cad | |||
9b362d0241
|
|||
7e2eb2cb75 |
@@ -24,6 +24,7 @@ import JustPage from './pages/JustPage';
|
||||
import ForPage from './pages/ForPage';
|
||||
import YouPage from './pages/YouPage';
|
||||
import AuthPage from './pages/AuthPage';
|
||||
import PrivacyPolicyPage from './pages/PrivacyPolicyPage';
|
||||
|
||||
let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content")
|
||||
let liveSocket = new LiveSocket("/live", Socket, {params: {_csrf_token: csrfToken}})
|
||||
@@ -43,5 +44,5 @@ liveSocket.connect()
|
||||
window.liveSocket = liveSocket
|
||||
|
||||
window.Components = {
|
||||
SplashPage, JustPage, ForPage, YouPage, AuthPage
|
||||
SplashPage, JustPage, ForPage, YouPage, AuthPage, PrivacyPolicyPage
|
||||
}
|
||||
|
@@ -34,12 +34,6 @@ const ForPage = (props: ForPageProps) => {
|
||||
};
|
||||
|
||||
const postContacts = async () => {
|
||||
// const fragmentData = window.location.hash.split('.');
|
||||
// if (fragmentData.length <= 0) {
|
||||
// alert("No key found in fragment URI");
|
||||
// return;
|
||||
// }
|
||||
|
||||
const linkId = sessionStorage.getItem("link_id");
|
||||
if (!linkId) {
|
||||
alert("No created link found in storage");
|
||||
|
62
assets/js/pages/PrivacyPolicyPage.tsx
Normal file
62
assets/js/pages/PrivacyPolicyPage.tsx
Normal file
@@ -0,0 +1,62 @@
|
||||
import React from "react";
|
||||
|
||||
import {
|
||||
CenteredContainer,
|
||||
Header1,
|
||||
Header3,
|
||||
GlobalStyle,
|
||||
} from "@intended/intended-ui";
|
||||
|
||||
const PrivacyPolicyPage = () => {
|
||||
return (
|
||||
<React.StrictMode>
|
||||
<GlobalStyle />
|
||||
<CenteredContainer
|
||||
fullscreen
|
||||
style={{
|
||||
background: "none",
|
||||
height: "auto",
|
||||
}}
|
||||
>
|
||||
<CenteredContainer wide style={{ maxWidth: "800px" }}>
|
||||
<Header1>Privacy Policy</Header1>
|
||||
<Header3
|
||||
small
|
||||
style={{
|
||||
color: "#CCCCCC",
|
||||
textAlign: "left",
|
||||
fontSize: "18px",
|
||||
lineHeight: 1.6,
|
||||
}}
|
||||
>
|
||||
<p>
|
||||
This instance of Intended Link collects as little data as
|
||||
necessary to provide its service. It can not read the secret
|
||||
message and secret file, and all data associated with a link is
|
||||
deleted once it expires.
|
||||
</p>
|
||||
<p>
|
||||
Each link created will store the recipient's username or email and
|
||||
its associated service for authorization purposes. It will store
|
||||
the filename and filetype of the secret file, if it exists, to
|
||||
make it easier for users to download and use the file once it's
|
||||
decrypted. We store the timestamps of when the Link was created
|
||||
and updated, along with when the link should expire.
|
||||
</p>
|
||||
<p>
|
||||
When you authenticate with one of our supported OAuth providers,
|
||||
we receive the third party's response, and if verification was
|
||||
successful, we store the account's username and verified emails in
|
||||
a short-lived session store. This data is then used to determine
|
||||
whether the user is permitted to download the link's associated
|
||||
secret message and file.
|
||||
</p>
|
||||
<p>This software is licensed under LGPL.</p>
|
||||
</Header3>
|
||||
</CenteredContainer>
|
||||
</CenteredContainer>
|
||||
</React.StrictMode>
|
||||
);
|
||||
};
|
||||
|
||||
export default PrivacyPolicyPage;
|
BIN
assets/static/images/thumbnail.jpg
Normal file
BIN
assets/static/images/thumbnail.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 156 KiB |
@@ -10,4 +10,9 @@ defmodule EntenduWeb.PageController do
|
||||
|> clear_session()
|
||||
|> render("index.html")
|
||||
end
|
||||
|
||||
def privacy(conn, _params) do
|
||||
conn
|
||||
|> render("privacy_policy.html")
|
||||
end
|
||||
end
|
||||
|
@@ -35,6 +35,8 @@ defmodule EntenduWeb.Router do
|
||||
post "/just/for", LinkController, :for
|
||||
get "/just/for/you", LinkController, :you_page
|
||||
get "/just/for/you/:id", LinkController, :auth_page
|
||||
|
||||
get "/privacy-policy", PageController, :privacy
|
||||
end
|
||||
|
||||
scope "/auth", EntenduWeb do
|
||||
|
@@ -4,8 +4,20 @@
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<!-- Essential META Tags -->
|
||||
<meta property="og:title" content="Intended Link">
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:image" content="https://intended.link/images/thumbnail.jpg">
|
||||
<meta property="og:url" content="https://intended.link">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
|
||||
<!-- Non-Essential, But Recommended -->
|
||||
<meta property="og:description" content="Securely send private messages to social media accounts.">
|
||||
<meta property="og:site_name" content="Intended Link">
|
||||
<meta name="twitter:image:alt" content="Preview of splash page">
|
||||
|
||||
<%= csrf_meta_tag() %>
|
||||
<%= live_title_tag assigns[:page_title] || "Entendu", suffix: " · Phoenix Framework" %>
|
||||
<%= live_title_tag assigns[:page_title] || "Intended Link", suffix: "" %>
|
||||
<link phx-track-static rel="stylesheet" href="<%= Routes.static_path(@conn, "/css/app.css") %>"/>
|
||||
<script defer phx-track-static type="text/javascript" src="<%= Routes.static_path(@conn, "/js/app.js") %>"></script>
|
||||
</head>
|
||||
|
3
lib/entendu_web/templates/page/privacy_policy.html.eex
Normal file
3
lib/entendu_web/templates/page/privacy_policy.html.eex
Normal file
@@ -0,0 +1,3 @@
|
||||
<section>
|
||||
<%= react_component("Components.PrivacyPolicyPage") %>
|
||||
</section>
|
Reference in New Issue
Block a user