From 836fc822a987724ed31de733fd86c8f31d02e9d2 Mon Sep 17 00:00:00 2001 From: xfarrow <49845537+xfarrow@users.noreply.github.com> Date: Mon, 24 Mar 2025 12:18:05 +0100 Subject: [PATCH] Update userprofile.html --- backend/apis/BlinkApiUsageExampleBRUNO.json | 291 ++++----- backend/apis/BlinkApiUsageExamplePOSTMAN.json | 614 ------------------ backend/apis/nodejs/src/app.js | 6 +- .../src/routes/person_contact_info_routes.js | 2 +- frontend/vanilla/css/profile.css | 125 ++-- frontend/vanilla/html/activate-account.html | 2 +- frontend/vanilla/html/login.html | 2 +- frontend/vanilla/html/register.html | 6 +- frontend/vanilla/html/userprofile.html | 43 +- 9 files changed, 262 insertions(+), 829 deletions(-) delete mode 100644 backend/apis/BlinkApiUsageExamplePOSTMAN.json diff --git a/backend/apis/BlinkApiUsageExampleBRUNO.json b/backend/apis/BlinkApiUsageExampleBRUNO.json index cb0ae4b..56cc222 100644 --- a/backend/apis/BlinkApiUsageExampleBRUNO.json +++ b/backend/apis/BlinkApiUsageExampleBRUNO.json @@ -5,7 +5,7 @@ { "type": "http", "name": "ActivatePerson", - "seq": 1, + "seq": 26, "request": { "url": "http://localhost:3000/api/people/me/activation?q=3ac9c204de1676b54163ed8015c7af00", "method": "GET", @@ -21,6 +21,14 @@ "enabled": true } ], + "params": [ + { + "name": "q", + "value": "3ac9c204de1676b54163ed8015c7af00", + "type": "query", + "enabled": true + } + ], "body": { "mode": "json", "json": "", @@ -33,20 +41,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [ - { - "name": "q", - "value": "3ac9c204de1676b54163ed8015c7af00", - "enabled": true - } - ] + } } }, { "type": "http", "name": "AddOrganizationAdmin", - "seq": 2, + "seq": 12, "request": { "url": "http://localhost:3000/api/organizations/1/admins", "method": "POST", @@ -62,6 +63,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "json", "json": "{\n \"personId\" : \"2\"\n}", @@ -74,18 +76,18 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "ChangeApplicationStatus", - "seq": 3, + "seq": 7, "request": { "url": "http://localhost:3000/api/organizations/joboffers/applications/5", "method": "PATCH", "headers": [], + "params": [], "body": { "mode": "json", "json": "{\n \"status\": \"ACCEPTED\"\n}", @@ -98,18 +100,18 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "CreateApplication", - "seq": 4, + "seq": 10, "request": { "url": "http://localhost:3000/api/organizations/joboffers/1/applications", "method": "POST", "headers": [], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -121,14 +123,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "CreateJobOffer", - "seq": 5, + "seq": 6, "request": { "url": "http://localhost:3000/api/organizations/1/joboffers", "method": "POST", @@ -144,6 +145,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "json", "json": "{\n \"title\" : \"NodeJS developer\",\n \"description\" : \"We are looking for NodeJS developers which can help us build Blink\",\n \"salaryFrequency\": \"YEARLY\",\n \"salary\": [20000, 23000],\n \"salaryCurrency\": \"EUR\",\n \"location\" : \"Rome\",\n \"remote\": \"PARTIALLY\",\n \"contractType\": \"PART-TIME\",\n \"tags\" : [\"javascript\"]\n}", @@ -156,14 +158,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "CreateOrganization", - "seq": 6, + "seq": 16, "request": { "url": "http://localhost:3000/api/organizations", "method": "POST", @@ -179,6 +180,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "json", "json": "{\n \"name\" : \"Blink Inc.\",\n \"location\" : \"Napoli, Italy\",\n \"description\" : \"Blink is a privacy-respecting business-oriented social media platform focused on fostering connections between businesses and individuals, propelling careers and sparking innovation in the professional world.\"\n}", @@ -191,18 +193,18 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "DeleteApplication", - "seq": 7, + "seq": 9, "request": { "url": "http://localhost:3000/api/organizations/joboffers/applications/6", "method": "DELETE", "headers": [], + "params": [], "body": { "mode": "json", "json": "{\n \"jobApplicationId\": 1\n}", @@ -215,18 +217,18 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "DeleteContactInfo", - "seq": 28, + "seq": 18, "request": { "url": "http://localhost:3000/api/people/contactinfos/2", "method": "DELETE", "headers": [], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -238,43 +240,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] - } - }, - { - "type": "http", - "name": "DeleteJobOffer", - "seq": 8, - "request": { - "url": "http://localhost:3000/api/organizations/joboffers/3", - "method": "DELETE", - "headers": [ - { - "name": "User-Agent", - "value": "insomnia/2023.5.8", - "enabled": true - } - ], - "body": { - "mode": "none", - "formUrlEncoded": [], - "multipartForm": [] - }, - "script": {}, - "vars": {}, - "assertions": [], - "tests": "", - "auth": { - "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "DeleteOrganization", - "seq": 9, + "seq": 13, "request": { "url": "http://localhost:3000/api/organizations/1", "method": "DELETE", @@ -285,6 +257,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -296,14 +269,42 @@ "tests": "", "auth": { "mode": "none" + } + } + }, + { + "type": "http", + "name": "DeleteJobOffer", + "seq": 5, + "request": { + "url": "http://localhost:3000/api/organizations/joboffers/3", + "method": "DELETE", + "headers": [ + { + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "enabled": true + } + ], + "params": [], + "body": { + "mode": "none", + "formUrlEncoded": [], + "multipartForm": [] }, - "query": [] + "script": {}, + "vars": {}, + "assertions": [], + "tests": "", + "auth": { + "mode": "none" + } } }, { "type": "http", "name": "DeletePerson", - "seq": 10, + "seq": 20, "request": { "url": "http://localhost:3000/api/people/me", "method": "DELETE", @@ -314,6 +315,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -325,14 +327,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "FilterOrganizationByPrefix", - "seq": 11, + "seq": 1, "request": { "url": "http://localhost:3000/api/organizations/filter", "method": "POST", @@ -348,6 +349,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "json", "json": "{\n \"name\" : \"bli\"\n}", @@ -360,18 +362,18 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "GetApplicantsByJobOffer", - "seq": 12, + "seq": 2, "request": { "url": "http://localhost:3000/api/organizations/joboffers/1/applications", "method": "GET", "headers": [], + "params": [], "body": { "mode": "json", "json": "", @@ -384,18 +386,18 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "GetApplicantsByOrganization", - "seq": 13, + "seq": 3, "request": { "url": "http://localhost:3000/api/organizations/1/joboffers/applications", "method": "GET", "headers": [], + "params": [], "body": { "mode": "json", "json": "", @@ -408,18 +410,18 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "GetContactInfosByPerson", - "seq": 27, + "seq": 17, "request": { "url": "http://localhost:3000/api/people/1/contactinfos", "method": "GET", "headers": [], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -431,14 +433,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "GetJobOffers", - "seq": 14, + "seq": 4, "request": { "url": "http://localhost:3000/api/organizations/1/joboffers/", "method": "GET", @@ -449,6 +450,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -460,18 +462,18 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "GetMyApplications", - "seq": 15, + "seq": 8, "request": { "url": "http://localhost:3000/api/organizations/joboffers/applications/mine", "method": "GET", "headers": [], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -483,14 +485,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "GetMyself", - "seq": 16, + "seq": 21, "request": { "url": "http://localhost:3000/api/people/me", "method": "GET", @@ -501,6 +502,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -512,14 +514,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "GetOrganization", - "seq": 17, + "seq": 15, "request": { "url": "http://localhost:3000/api/organizations/1", "method": "GET", @@ -530,6 +531,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -541,14 +543,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "GetPerson", - "seq": 18, + "seq": 22, "request": { "url": "http://localhost:3000/api/people/1/details", "method": "GET", @@ -559,6 +560,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -570,8 +572,7 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { @@ -582,6 +583,7 @@ "url": "http://localhost:3000/people/myself/contactinfos", "method": "POST", "headers": [], + "params": [], "body": { "mode": "none", "formUrlEncoded": [], @@ -593,14 +595,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "Login", - "seq": 20, + "seq": 27, "request": { "url": "http://localhost:3000/api/people/me/token", "method": "POST", @@ -616,6 +617,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "json", "json": "{\n \"email\": \"john@mail.org\",\n \"password\": \"password\"\n}", @@ -628,14 +630,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "Register", - "seq": 21, + "seq": 28, "request": { "url": "http://localhost:3000/api/people", "method": "POST", @@ -651,6 +652,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "json", "json": "{\n \"email\" : \"john@mail.org\",\n \"password\" : \"password\",\n \"displayName\" : \"John Doe\",\n \"aboutMe\" : \"I am a passionate software engineer\",\n \"qualification\" : \"Software Engineer\"\n}", @@ -663,14 +665,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "RemoveOrganizationAdmin", - "seq": 23, + "seq": 11, "request": { "url": "http://localhost:3000/api/organizations/1/admins/me", "method": "DELETE", @@ -686,6 +687,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "json", "json": "", @@ -698,49 +700,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] - } - }, - { - "type": "http", - "name": "RequestNewPassword", - "seq": 22, - "request": { - "url": "http://localhost:3000/api/resetpassword/request", - "method": "POST", - "headers": [ - { - "name": "Content-Type", - "value": "application/json", - "enabled": true - }, - { - "name": "User-Agent", - "value": "insomnia/2023.5.8", - "enabled": true - } - ], - "body": { - "mode": "json", - "json": "{\n \"email\": \"john@mail.org\"\n}", - "formUrlEncoded": [], - "multipartForm": [] - }, - "script": {}, - "vars": {}, - "assertions": [], - "tests": "", - "auth": { - "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "ResetNewPassword", - "seq": 24, + "seq": 23, "request": { "url": "http://localhost:3000/api/resetpassword/reset", "method": "POST", @@ -756,6 +722,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "json", "json": "{\n \"secret\": \"360837853e2d3cf799c709b44720b4e3\",\n \"password\": \"password\"\n}", @@ -768,14 +735,48 @@ "tests": "", "auth": { "mode": "none" + } + } + }, + { + "type": "http", + "name": "RequestNewPassword", + "seq": 24, + "request": { + "url": "http://localhost:3000/api/resetpassword/request", + "method": "POST", + "headers": [ + { + "name": "Content-Type", + "value": "application/json", + "enabled": true + }, + { + "name": "User-Agent", + "value": "insomnia/2023.5.8", + "enabled": true + } + ], + "params": [], + "body": { + "mode": "json", + "json": "{\n \"email\": \"john@mail.org\"\n}", + "formUrlEncoded": [], + "multipartForm": [] }, - "query": [] + "script": {}, + "vars": {}, + "assertions": [], + "tests": "", + "auth": { + "mode": "none" + } } }, { "type": "http", "name": "UpdateOrganization", - "seq": 25, + "seq": 14, "request": { "url": "http://localhost:3000/api/organizations/1", "method": "PATCH", @@ -791,6 +792,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "json", "json": "{\n \"name\": \"Blink Inc.\",\n \"location\": \"Naples (Campania), Italy\",\n \"description\": \"Blink is a privacy-respecting business-oriented social media platform focused on fostering connections between businesses and individuals, propelling careers and sparking innovation in the professional world. Think of it as an open-source alternative to LinkedIn.\"\n}", @@ -803,14 +805,13 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { "type": "http", "name": "UpdatePerson", - "seq": 26, + "seq": 25, "request": { "url": "http://localhost:3000/api/people/me", "method": "PATCH", @@ -826,6 +827,7 @@ "enabled": true } ], + "params": [], "body": { "mode": "json", "json": "{\n \"displayName\": \"John Junior Doe III\",\n \"dateOfBirth\": \"1970-01-01\",\n \"openToWork\": \"false\",\n \"placeOfLiving\": \"Oslo, Norway\",\n \"aboutMe\": \"I am a passionate software engineer, but I also love art and music\",\n \"new_password\": \"password\",\n \"old_password\": \"password\",\n \"qualification\" : \"Software Engineer at Blink Inc. & Google LLC\",\n \"visibility\": \"EVERYONE\",\n \"oldPassword\": \"password\",\n \"newPassword\": \"password\"\n}", @@ -838,8 +840,7 @@ "tests": "", "auth": { "mode": "none" - }, - "query": [] + } } }, { diff --git a/backend/apis/BlinkApiUsageExamplePOSTMAN.json b/backend/apis/BlinkApiUsageExamplePOSTMAN.json deleted file mode 100644 index 183c1b2..0000000 --- a/backend/apis/BlinkApiUsageExamplePOSTMAN.json +++ /dev/null @@ -1,614 +0,0 @@ -{ - "info": { - "name": "Blink", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - }, - "item": [ - { - "name": "ActivatePerson", - "event": [], - "request": { - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/people/me/activation?q=3ac9c204de1676b54163ed8015c7af00", - "body": { - "mode": "raw", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "AddOrganizationAdmin", - "event": [], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/organizations/1/admins", - "body": { - "mode": "raw", - "raw": "{\n \"personId\" : \"2\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "ChangeApplicationStatus", - "event": [], - "request": { - "method": "PATCH", - "header": [], - "url": "http://localhost:3000/api/organizations/joboffers/applications/5", - "body": { - "mode": "raw", - "raw": "{\n \"status\": \"ACCEPTED\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "CreateApplication", - "event": [], - "request": { - "method": "POST", - "header": [], - "url": "http://localhost:3000/api/organizations/joboffers/1/applications" - } - }, - { - "name": "CreateJobOffer", - "event": [], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/organizations/1/joboffers", - "body": { - "mode": "raw", - "raw": "{\n \"title\" : \"NodeJS developer\",\n \"description\" : \"We are looking for NodeJS developers which can help us build Blink\",\n \"salaryFrequency\": \"YEARLY\",\n \"salary\": [20000, 23000],\n \"salaryCurrency\": \"EUR\",\n \"location\" : \"Rome\",\n \"remote\": \"PARTIALLY\",\n \"contractType\": \"PART-TIME\",\n \"tags\" : [\"javascript\"]\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "CreateOrganization", - "event": [], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/organizations", - "body": { - "mode": "raw", - "raw": "{\n \"name\" : \"Blink Inc.\",\n \"location\" : \"Napoli, Italy\",\n \"description\" : \"Blink is a privacy-respecting business-oriented social media platform focused on fostering connections between businesses and individuals, propelling careers and sparking innovation in the professional world.\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "DeleteApplication", - "event": [], - "request": { - "method": "DELETE", - "header": [], - "url": "http://localhost:3000/api/organizations/joboffers/applications/6", - "body": { - "mode": "raw", - "raw": "{\n \"jobApplicationId\": 1\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "DeleteContactInfo", - "event": [], - "request": { - "method": "DELETE", - "header": [], - "url": "http://localhost:3000/api/people/contactinfos/2" - } - }, - { - "name": "DeleteJobOffer", - "event": [], - "request": { - "method": "DELETE", - "header": [ - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/organizations/joboffers/3" - } - }, - { - "name": "DeleteOrganization", - "event": [], - "request": { - "method": "DELETE", - "header": [ - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/organizations/1" - } - }, - { - "name": "DeletePerson", - "event": [], - "request": { - "method": "DELETE", - "header": [ - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/people/me" - } - }, - { - "name": "FilterOrganizationByPrefix", - "event": [], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/organizations/filter", - "body": { - "mode": "raw", - "raw": "{\n\t\"name\" : \"bli\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "GetApplicantsByJobOffer", - "event": [], - "request": { - "method": "GET", - "header": [], - "url": "http://localhost:3000/api/organizations/joboffers/1/applications", - "body": { - "mode": "raw", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "GetApplicantsByOrganization", - "event": [], - "request": { - "method": "GET", - "header": [], - "url": "http://localhost:3000/api/organizations/1/joboffers/applications", - "body": { - "mode": "raw", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "GetContactInfosByPerson", - "event": [], - "request": { - "method": "GET", - "header": [], - "url": "http://localhost:3000/api/people/1/contactinfos" - } - }, - { - "name": "GetJobOffers", - "event": [], - "request": { - "method": "GET", - "header": [ - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/organizations/1/joboffers/" - } - }, - { - "name": "GetMyApplications", - "event": [], - "request": { - "method": "GET", - "header": [], - "url": "http://localhost:3000/api/organizations/joboffers/applications/mine" - } - }, - { - "name": "GetMyself", - "event": [], - "request": { - "method": "GET", - "header": [ - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/people/me" - } - }, - { - "name": "GetOrganization", - "event": [], - "request": { - "method": "GET", - "header": [ - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/organizations/1" - } - }, - { - "name": "GetPerson", - "event": [], - "request": { - "method": "GET", - "header": [ - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/people/1/details" - } - }, - { - "name": "InsertContactInfo", - "event": [], - "request": { - "method": "POST", - "header": [], - "url": "http://localhost:3000/people/myself/contactinfos" - } - }, - { - "name": "Login", - "event": [], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/people/me/token", - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"john@mail.org\",\n \"password\": \"password\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "Register", - "event": [], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/people", - "body": { - "mode": "raw", - "raw": "{\n \"email\" : \"john@mail.org\",\n \"password\" : \"password\",\n \"displayName\" : \"John Doe\",\n \"aboutMe\" : \"I am a passionate software engineer\",\n \"qualification\" : \"Software Engineer\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "RemoveOrganizationAdmin", - "event": [], - "request": { - "method": "DELETE", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/organizations/1/admins/me", - "body": { - "mode": "raw", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "RequestNewPassword", - "event": [], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/resetpassword/request", - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"john@mail.org\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "ResetNewPassword", - "event": [], - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/resetpassword/reset", - "body": { - "mode": "raw", - "raw": "{\n \"secret\": \"360837853e2d3cf799c709b44720b4e3\",\n \"password\": \"password\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "UpdateOrganization", - "event": [], - "request": { - "method": "PATCH", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/organizations/1", - "body": { - "mode": "raw", - "raw": "{\n \"name\": \"Blink Inc.\",\n \"location\": \"Naples (Campania), Italy\",\n \"description\": \"Blink is a privacy-respecting business-oriented social media platform focused on fostering connections between businesses and individuals, propelling careers and sparking innovation in the professional world. Think of it as an open-source alternative to LinkedIn.\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "UpdatePerson", - "event": [], - "request": { - "method": "PATCH", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "disabled": false, - "type": "default" - }, - { - "key": "User-Agent", - "value": "insomnia/2023.5.8", - "disabled": false, - "type": "default" - } - ], - "url": "http://localhost:3000/api/people/me", - "body": { - "mode": "raw", - "raw": "{\n \"displayName\": \"John Junior Doe III\",\n \"dateOfBirth\": \"1970-01-01\",\n \"openToWork\": \"false\",\n \"placeOfLiving\": \"Oslo, Norway\",\n \"aboutMe\": \"I am a passionate software engineer, but I also love art and music\",\n \"new_password\": \"password\",\n \"old_password\": \"password\",\n \"qualification\" : \"Software Engineer at Blink Inc. & Google LLC\",\n \"visibility\": \"EVERYONE\",\n \"oldPassword\": \"password\",\n \"newPassword\": \"password\"\n}", - "options": { - "raw": { - "language": "json" - } - } - } - } - }, - { - "name": "bruno", - "event": [] - }, - { - "name": "bruno", - "item": [] - } - ], - "variable": [] -} \ No newline at end of file diff --git a/backend/apis/nodejs/src/app.js b/backend/apis/nodejs/src/app.js index 6806e1c..05bb1d9 100644 --- a/backend/apis/nodejs/src/app.js +++ b/backend/apis/nodejs/src/app.js @@ -51,14 +51,14 @@ app.use(rateLimiter); // Apply the rate limiter middleware to all routes ===== BEGIN ROUTE HANDLING ===== */ app.use('/api/server', serverRoutes.routes); -app.use('/api/people', personRoutes.publicRoutes); // TODO: Change in "/people". Idk why I chose "persons" -app.use('/api/people', personRoutes.protectedRoutes); // TODO: Change in "/people". Idk why I chose "persons" +app.use('/api/people', personRoutes.publicRoutes); +app.use('/api/people', personRoutes.protectedRoutes); app.use('/api/organizations', organizationRoutes.routes); app.use('/api/organizations', jobOffersRoutes.routes); app.use('/api/organizations', organizationAdminRoutes.routes); app.use('/api/resetpassword', resetPasswordRoutes.routes); app.use('/api/organizations', applicationRoutes.routes); -app.use('/api/persons', personContactInfosRoutes.routes); // TODO: Change in "/people". Idk why I chose "persons" +app.use('/api/people', personContactInfosRoutes.routes); /* ===== END ROUTE HANDLING ===== diff --git a/backend/apis/nodejs/src/routes/person_contact_info_routes.js b/backend/apis/nodejs/src/routes/person_contact_info_routes.js index 3036da7..87c9bad 100644 --- a/backend/apis/nodejs/src/routes/person_contact_info_routes.js +++ b/backend/apis/nodejs/src/routes/person_contact_info_routes.js @@ -18,7 +18,7 @@ const PersonContactInfo = require('../models/person_contact_info_model'); async function insert(req, res) { try { const contactInfo = await PersonContactInfo.insert(req.jwt.person_id, req.body.content, req.body.info_type); - res.set('Location', `/api/persons/${req.jwt.person_id}/contactinfos/${contactInfo.id}`); + res.set('Location', `/api/people/${req.jwt.person_id}/contactinfos/${contactInfo.id}`); return res.status(201).json(contactInfo); } catch (error) { console.error(`Error in function ${insert.name}: ${error}`); diff --git a/frontend/vanilla/css/profile.css b/frontend/vanilla/css/profile.css index 26bb0b2..30f0121 100644 --- a/frontend/vanilla/css/profile.css +++ b/frontend/vanilla/css/profile.css @@ -1,75 +1,98 @@ -body { - font-family: Arial, sans-serif; - margin: 0; - padding: 0; - background-color: #f7f7f7; +#navlist { + background-color: #cfddf9; + overflow: hidden; + padding: 10px 0; + display: flex; + flex-wrap: wrap; + justify-content: space-around; + align-items: center; } -.container { - max-width: 800px; - margin: 20px auto; - background-color: #fff; - padding: 20px; - border-radius: 5px; - box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); - position: relative; -} - -header { +#navlist a { + color: black; + padding: 14px 20px; + text-decoration: none; text-align: center; - margin-bottom: 20px; } -h1 { - color: #333; - margin-bottom: 5px; +#navlist a:hover { + background-color: #95b5f4; + color: white; } -p { - color: #666; +.search { + flex-grow: 1; + display: flex; + justify-content: flex-end; + align-items: center; } -section { - margin-bottom: 20px; +.search input[type="text"] { + padding: 6px; + margin-right: 10px; + border: none; + font-size: 17px; + border-radius: 4px; } -h2 { - color: #333; - margin-bottom: 10px; +.search button { + padding: 6px 10px; + background: white; + color: #95b5f4; + border: none; + cursor: pointer; + border-radius: 4px; } -.job h3, -.education h3 { - color: #444; - margin-bottom: 5px; +.search button i { + font-size: 18px; } -ul { - list-style-type: disc; - margin-left: 20px; +.search button:hover { + background: #95b5f4; + color: white; } -footer { +/* Logo and tag styling */ +.content { text-align: center; margin-top: 20px; - color: #666; } -.profile-picture { - width: 150px; - height: 150px; - border-radius: 50%; - margin-bottom: 10px; +.content h1 { + color: green; } -.edit-badge { - position: absolute; - top: 20px; - right: 20px; - background-color: #008CFF; - color: #fff; - padding: 5px 10px; - border-radius: 5px; - font-weight: bold; - cursor: pointer; +/* Responsive styling */ +@media screen and (max-width: 600px) { + #navlist { + flex-direction: column; + align-items: flex-start; + } + + .search { + justify-content: flex-start; + width: 100%; + margin-top: 10px; + padding-left: 10px; + } + + .search input[type="text"] { + margin-right: 10px; + width: auto; + } + + .search button { + padding: 4px 8px; + } + + .search button i { + font-size: 14px; + } + + #navlist a { + width: 100%; + text-align: left; + padding: 10px 20px; + } } \ No newline at end of file diff --git a/frontend/vanilla/html/activate-account.html b/frontend/vanilla/html/activate-account.html index b7fe079..5f8b84f 100644 --- a/frontend/vanilla/html/activate-account.html +++ b/frontend/vanilla/html/activate-account.html @@ -34,7 +34,7 @@ return; } - const response = await fetch(`${API_URL}/persons/me/activation`, { + const response = await fetch(`${API_URL}/people/me/activation`, { method: 'POST', headers: createHeaders(null), body: JSON.stringify({ diff --git a/frontend/vanilla/html/login.html b/frontend/vanilla/html/login.html index 8c3b52e..116cadc 100644 --- a/frontend/vanilla/html/login.html +++ b/frontend/vanilla/html/login.html @@ -109,7 +109,7 @@ const password = document.getElementById("password").value; - const response = await fetch(`${API_URL}/persons/me/token`, { + const response = await fetch(`${API_URL}/people/me/token`, { method: "POST", body: JSON.stringify({ email: email, diff --git a/frontend/vanilla/html/register.html b/frontend/vanilla/html/register.html index d8e0491..dec1111 100644 --- a/frontend/vanilla/html/register.html +++ b/frontend/vanilla/html/register.html @@ -147,14 +147,12 @@ }), }; - fetch(`${API_URL}/persons`, options) + fetch(`${API_URL}/people`, options) .then(response => { response.json().then(data => { if (response.ok) { clearInputFields(); - if (!data - .enabled - ) { // is the user already enabled or do they need email verification? + if (!data.enabled) { // is the user already enabled or do they need email verification? showSuccessAlert( "Congratulations! You've successfully registered to Blink. " + "Please click on the e-mail we sent you to confirm your account" diff --git a/frontend/vanilla/html/userprofile.html b/frontend/vanilla/html/userprofile.html index 7e1ce1c..0ccc167 100644 --- a/frontend/vanilla/html/userprofile.html +++ b/frontend/vanilla/html/userprofile.html @@ -9,9 +9,31 @@ + + + + + + +
@@ -24,7 +46,8 @@
John Doe

Full Stack Developer

New York City, United States of America

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor +

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa @@ -175,8 +198,8 @@

- - + +