- initialize survey user
- skip survey user registration if cookie is already present
This commit is contained in:
parent
c901aaa922
commit
35937134f2
4 changed files with 52 additions and 9 deletions
|
@ -129,8 +129,20 @@ async fn register(
|
||||||
session: Session,
|
session: Session,
|
||||||
path: web::Query<RedirectQuery>,
|
path: web::Query<RedirectQuery>,
|
||||||
) -> ServiceResult<HttpResponse> {
|
) -> ServiceResult<HttpResponse> {
|
||||||
let uuid = runners::register_runner(&data).await?;
|
let is_authenticated = || {
|
||||||
session.insert(SURVEY_USER_ID, uuid.to_string()).unwrap();
|
if let Ok(Some(_)) = session.get::<String>(SURVEY_USER_ID) {
|
||||||
|
log::info!("user already registered");
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if !is_authenticated() {
|
||||||
|
let uuid = runners::register_runner(&data).await?;
|
||||||
|
session.insert(SURVEY_USER_ID, uuid.to_string()).unwrap();
|
||||||
|
session.get::<String>(SURVEY_USER_ID).unwrap().unwrap();
|
||||||
|
}
|
||||||
let path = path.into_inner();
|
let path = path.into_inner();
|
||||||
if let Some(redirect_to) = path.redirect_to {
|
if let Some(redirect_to) = path.redirect_to {
|
||||||
Ok(HttpResponse::Found()
|
Ok(HttpResponse::Found()
|
||||||
|
|
|
@ -109,8 +109,8 @@ async fn main() -> std::io::Result<()> {
|
||||||
actix_middleware::DefaultHeaders::new()
|
actix_middleware::DefaultHeaders::new()
|
||||||
.header("Permissions-Policy", "interest-cohort=()"),
|
.header("Permissions-Policy", "interest-cohort=()"),
|
||||||
)
|
)
|
||||||
.wrap(get_identity_service())
|
|
||||||
.wrap(get_survey_session())
|
.wrap(get_survey_session())
|
||||||
|
.wrap(get_identity_service())
|
||||||
.wrap(actix_middleware::NormalizePath::new(
|
.wrap(actix_middleware::NormalizePath::new(
|
||||||
actix_middleware::TrailingSlash::Trim,
|
actix_middleware::TrailingSlash::Trim,
|
||||||
))
|
))
|
||||||
|
@ -134,12 +134,13 @@ pub fn get_json_err() -> JsonConfig {
|
||||||
#[cfg(not(tarpaulin_include))]
|
#[cfg(not(tarpaulin_include))]
|
||||||
pub fn get_survey_session() -> actix_session::CookieSession {
|
pub fn get_survey_session() -> actix_session::CookieSession {
|
||||||
let cookie_secret = &SETTINGS.server.cookie_secret2;
|
let cookie_secret = &SETTINGS.server.cookie_secret2;
|
||||||
actix_session::CookieSession::private(cookie_secret.as_bytes())
|
actix_session::CookieSession::signed(cookie_secret.as_bytes())
|
||||||
|
.lazy(true)
|
||||||
.domain(&SETTINGS.server.domain)
|
.domain(&SETTINGS.server.domain)
|
||||||
.name("survey-id")
|
.name("survey-id")
|
||||||
.path("/survey")
|
.http_only(true)
|
||||||
|
.path("/")
|
||||||
.max_age(30 * 60)
|
.max_age(30 * 60)
|
||||||
.domain(&SETTINGS.server.domain)
|
|
||||||
.secure(false)
|
.secure(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
22
templates/api/v1/routes.ts
Normal file
22
templates/api/v1/routes.ts
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const ROUTES = {
|
||||||
|
register: "/survey/api/v1/benches/register",
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ROUTES;
|
|
@ -15,10 +15,15 @@
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import { Perf } from "./types";
|
import { Perf } from "./types";
|
||||||
|
import ROUTES from "../api/v1/routes";
|
||||||
|
|
||||||
export const index = () => {
|
export const index = () => {
|
||||||
console.log("running bench init");
|
|
||||||
const FACTOR = 500000;
|
const FACTOR = 500000;
|
||||||
|
|
||||||
|
const initSession = async () => {
|
||||||
|
fetch(ROUTES.register);
|
||||||
|
};
|
||||||
|
|
||||||
const worker = new Worker("/bench.js");
|
const worker = new Worker("/bench.js");
|
||||||
const res: Array<Perf> = [];
|
const res: Array<Perf> = [];
|
||||||
const stats = document.getElementById("stats");
|
const stats = document.getElementById("stats");
|
||||||
|
@ -71,8 +76,9 @@ export const index = () => {
|
||||||
s.innerHTML = "Benchmark finished";
|
s.innerHTML = "Benchmark finished";
|
||||||
};
|
};
|
||||||
|
|
||||||
const run = (e: Event) => {
|
const run = async (e: Event) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
await initSession();
|
||||||
document.getElementById("pre-bench").style.display = "none";
|
document.getElementById("pre-bench").style.display = "none";
|
||||||
document.getElementById("bench").style.display = "flex";
|
document.getElementById("bench").style.display = "flex";
|
||||||
|
|
||||||
|
@ -100,5 +106,7 @@ export const index = () => {
|
||||||
addDeviceInfo();
|
addDeviceInfo();
|
||||||
};
|
};
|
||||||
|
|
||||||
document.getElementById("start").addEventListener("click", (e) => run(e));
|
document
|
||||||
|
.getElementById("start")
|
||||||
|
.addEventListener("click", async (e) => await run(e));
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue