Skip to content

Commit

Permalink
sun-api & sun-ui. added privacy fields (#192)
Browse files Browse the repository at this point in the history
* sun-api & sun-ui. added privacy fields
* sun & wax. added new variables in marketing template
* marketing & wings. changed privacy template
* deploy. added default values to privacy file
* sun-ui. i18n: added privacy fields

Co-authored-by: Davide Marini <[email protected]>
  • Loading branch information
edospadoni and cotosso authored Jun 12, 2024
1 parent ee7d3ce commit 7a7f1b6
Show file tree
Hide file tree
Showing 11 changed files with 282 additions and 102 deletions.
8 changes: 7 additions & 1 deletion deploy/ansible/roles/icarodb/files/icaro.sql
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ CREATE TABLE `accounts` (
`username` varchar (200) NOT NULL,
`password` varchar (200) NOT NULL,
`email` varchar(250),
`privacy_name` varchar(512),
`privacy_vat` varchar(512),
`privacy_address` varchar(512),
`privacy_email` varchar(512),
`privacy_dpo` varchar(512),
`privacy_dpo_mail` varchar(512),
`created` datetime,
UNIQUE KEY (`username`),
UNIQUE KEY (`uuid`),
Expand All @@ -17,7 +23,7 @@ CREATE TABLE `accounts` (
);

/* CREATE DEFAULT ADMIN USER */
INSERT INTO `accounts` VALUES (1, 0, "", "admin", "Admin", "admin", MD5("admin"), "", NOW());
INSERT INTO `accounts` VALUES (1, 0, "", "admin", "Admin", "admin", MD5("admin"), "", "", "", "", "", "", "", NOW());

CREATE TABLE `account_preferences` (
`id` serial,
Expand Down
151 changes: 75 additions & 76 deletions deploy/ansible/roles/wax/files/marketing
Original file line number Diff line number Diff line change
Expand Up @@ -4,102 +4,101 @@ Ai sensi degli artt. 13 e 14 del Regolamento 2016/679/UE
In conformità con i requisiti posti dal Regolamento Generale in materia di protezione dei dati personali il Titolare del trattamento fornisce all’interessato le seguenti informazioni in relazione ai trattamenti di dati personali effettuati.

1. TRATTAMENTO HOTSPOT
Denominazione
UTILIZZO DEL SERVIZIO DI RETE WIRELESS

Titolare del trattamento
Riportato nel Termini di servizio

Responsabile del trattamento
Rivenditore del servizio contrattualizzato con il Titolare del trattamento

Sub-Responsabile del trattamento
Nome Nethesis s.r.l.U.
Indirizzo Via degli Olmi 8, 61122 Pesaro (PU) - ITALIA
P.IVA / CF 02734760412 / 02734760412
Legale rappresentante CRISTIAN MANONI
Contatto privacy [email protected]
PEC [email protected]
Telefono 07211791157

DPO - Responsabile della protezione dei dati
Nome Avvera s.r.l.
Indirizzo Largo Umberto Boccioni, 1 – 21040 Origgio (VA) -

Dati trattati nell'utilizzo dell'Hotspot
VEDERE LE INTEGRAZIONI SUL DOCUMENTO "Terms of use"

Durata del trattamento:
VEDERE LE INTEGRAZIONI SUL DOCUMENTO "Terms of use"

Base giuridica:
VEDERE LE INTEGRAZIONI SUL DOCUMENTO "Terms of use"

Natura del conferimento:
VEDERE LE INTEGRAZIONI SUL DOCUMENTO "Terms of use"
Denominazione
UTILIZZO DEL SERVIZIO DI RETE WIRELESS

Titolare del trattamento
Riportato nel Termini di servizio

Responsabile del trattamento
{{ if .PrivacyName}}
Ragione Sociale {{ .PrivacyName }}
Indirizzo {{ .PrivacyAddress }}
P.IVA / CF {{ .PrivacyVAT }}
Contatto privacy {{ .PrivacyEmail }}
{{ if and .PrivacyDPO .PrivacyDPOMail }}
DPO - Responsabile della protezione dei dati
Nome DPO {{ .PrivacyDPO }}
Email DPO {{ .PrivacyDPOMail }}
{{ end }}
{{ else }}
Rivenditore del servizio contrattualizzato con il Titolare del trattamento
{{ end }}
Dati trattati nell'utilizzo dell'Hotspot
VEDERE LE INTEGRAZIONI SUL DOCUMENTO "Terms of use"

Durata del trattamento:
VEDERE LE INTEGRAZIONI SUL DOCUMENTO "Terms of use"

Base giuridica:
VEDERE LE INTEGRAZIONI SUL DOCUMENTO "Terms of use"

Natura del conferimento:
VEDERE LE INTEGRAZIONI SUL DOCUMENTO "Terms of use"

2. TRATTAMENTO USO DEL SITO
Denominazione
Navigazione del sito web che ospita il servizio di autenticazione

Descrizione
Si tratta dei dati raccolti automaticamente durante la navigazione esclusivamente sul sito internet del Titolare all'indirizzo my.nethspot.com e quelli comunicati spontaneamente dall'Utente tramite il modulo di contatto.

Data ultima revisione
15/02/2024

Titolare del trattamento
Nome Nethesis s.r.l.U.
Indirizzo Via degli Olmi 8, 61122 Pesaro (PU) - ITALIA
P.IVA / CF 02734760412 / 02734760412
Legale rappresentante CRISTIAN MANONI
Contatto privacy [email protected]
PEC [email protected]
Telefono 07211791157

DPO - Responsabile della protezione dei dati
Nome Avvera s.r.l.
Indirizzo Largo Umberto Boccioni, 1 – 21040 Origgio (VA) -

Dati trattati nella navigazione del sito
Dati di navigazione (quali: indirizzo IP, indirizzi URI/URL, orario di accesso ecc.)
Dati particolari trattati : nessuno

Durata del trattamento:
conservazione dei log per 180 giorni.

Base giuridica:
legittimo interesse (art. 6, par. 1 lett. f) e considerando 47 GDPR): il trattamento è necessario per il perseguimento del legittimo interesse del titolare del trattamento o di terzi, a condizione che non prevalgano gli interessi o i diritti e le libertà fondamentali dell’interessato che richiedono la protezione dei dati personali, tenuto conto delle ragionevoli aspettative nutrite dall’interessato in base alla sua relazione con il titolare del trattamento. Attività strettamente necessarie al funzionamento del sito e all’erogazione del servizio di navigazione sulla piattaforma.

Natura del conferimento:
necessaria al fine di permettere la navigazione del sito web.Il trattamento è necessario per il perseguimento del legittimo interesse del titolare del trattamento o di terzi
Denominazione
Navigazione del sito web che ospita il servizio di autenticazione

Descrizione
Si tratta dei dati raccolti automaticamente durante la navigazione esclusivamente sul sito internet del Titolare all'indirizzo my.nethspot.com e quelli comunicati spontaneamente dall'Utente tramite il modulo di contatto.

Data ultima revisione
14/06/2024


Titolare del trattamento
Nome Nethesis s.r.l.U.
Indirizzo Via degli Olmi 8, 61122 Pesaro (PU) - ITALIA
P.IVA / CF 02734760412 / 02734760412
Legale rappresentante CRISTIAN MANONI
Contatto privacy [email protected]
PEC [email protected]
Telefono 07211791157

DPO - Responsabile della protezione dei dati
Nome Avvera s.r.l.
Indirizzo Largo Umberto Boccioni, 1 – 21040 Origgio (VA) -

Dati trattati nella navigazione del sito
Dati di navigazione (quali: indirizzo IP, indirizzi URI/URL, orario di accesso ecc.)
Dati particolari trattati : nessuno

Durata del trattamento:
conservazione dei log per 180 giorni.

Base giuridica:
legittimo interesse (art. 6, par. 1 lett. f) e considerando 47 GDPR): il trattamento è necessario per il perseguimento del legittimo interesse del titolare del trattamento o di terzi, a condizione che non prevalgano gli interessi o i diritti e le libertà fondamentali dell’interessato che richiedono la protezione dei dati personali, tenuto conto delle ragionevoli aspettative nutrite dall’interessato in base alla sua relazione con il titolare del trattamento. Attività strettamente necessarie al funzionamento del sito e all’erogazione del servizio di navigazione sulla piattaforma.

Natura del conferimento:
necessaria al fine di permettere la navigazione del sito web.Il trattamento è necessario per il perseguimento del legittimo interesse del titolare del trattamento o di terzi

Se intende richiedere ulteriori informazioni sul trattamento dei Suoi dati personali o per l'eventuale esercizio dei Suoi diritti, potrà rivolgersi per iscritto direttamente al contatto privacy sopra indicato.

In conformità con i requisiti posti dal Regolamento Generale in materia di protezione dei dati personali il Titolare del trattamento fornisce all’interessato le seguenti informazioni in relazione ai trattamenti di dati personali effettuati.

DIRITTI DEGLI INTERESSATI - Artt. da 15 a 22 e dall'art. 13 del GDPR.

Diritto di accesso
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di richiedere al titolare l'accesso ai propri dati personali.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di richiedere al titolare l'accesso ai propri dati personali.

Diritto di rettifica.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di richiedere al titolare la rettifica dei propri dati personali.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di richiedere al titolare la rettifica dei propri dati personali.

Diritto di cancellazione.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di richiedere al titolare la cancellazione dei propri dati personali.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di richiedere al titolare la cancellazione dei propri dati personali.

Diritto di limitazione.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di richiedere al titolare la limitazione dei dati che lo riguardano.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di richiedere al titolare la limitazione dei dati che lo riguardano.

Diritto di opposizione.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di opporsi al loro trattamento.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di opporsi al loro trattamento.

Diritto di portabilità.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di esercitare il proprio diritto alla portabilità dei dati.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di esercitare il proprio diritto alla portabilità dei dati.

Diritto di revoca.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di esercitare il proprio diritto alla revoca del consenso.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di esercitare il proprio diritto alla revoca del consenso.

Diritto di reclamo.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di esercitare il proprio diritto di porre reclamo dinanzi all'autorità di controllo.
L'interessato ha diritto, secondo quanto previsto dagli artt. da 15 a 22 e dall' art. 13 del GDPR di esercitare il proprio diritto di porre reclamo dinanzi all'autorità di controllo.
38 changes: 30 additions & 8 deletions sun/sun-api/methods/accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,14 +73,20 @@ func CreateAccount(c *gin.Context) {
passwordHash := fmt.Sprintf("%x", h.Sum(nil))

account := models.Account{
CreatorId: creatorId,
Uuid: json.Uuid,
Type: json.Type,
Name: json.Name,
Username: json.Username,
Password: passwordHash,
Email: json.Email,
Created: time.Now().UTC(),
CreatorId: creatorId,
Uuid: json.Uuid,
Type: json.Type,
Name: json.Name,
Username: json.Username,
Password: passwordHash,
Email: json.Email,
PrivacyName: "",
PrivacyVAT: "",
PrivacyAddress: "",
PrivacyEmail: "",
PrivacyDPO: "",
PrivacyDPOMail: "",
Created: time.Now().UTC(),
}

// create account record
Expand Down Expand Up @@ -182,6 +188,22 @@ func UpdateAccount(c *gin.Context) {
account.Type = json.Type
}

// privacy update
if len(json.PrivacyName) > 0 {
account.PrivacyName = json.PrivacyName
}
if len(json.PrivacyVAT) > 0 {
account.PrivacyVAT = json.PrivacyVAT
}
if len(json.PrivacyAddress) > 0 {
account.PrivacyAddress = json.PrivacyAddress
}
if len(json.PrivacyEmail) > 0 {
account.PrivacyEmail = json.PrivacyEmail
}
account.PrivacyDPO = json.PrivacyDPO
account.PrivacyDPOMail = json.PrivacyDPOMail

// NOTE: Subscription plan change is not supported

db.Save(&account)
Expand Down
30 changes: 21 additions & 9 deletions sun/sun-api/models/account.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,21 @@ package models
import "time"

type Account struct {
Id int `db:"id" json:"id"`
CreatorId int `db:"creator_id" json:"creator_id"`
Uuid string `db:"uuid" json:"uuid"`
Type string `db:"type" json:"type"`
Name string `db:"name" json:"name"`
Username string `db:"username" json:"username"`
Password string `db:"password" json:"-"`
Email string `db:"email" json:"email"`
Created time.Time `db:"created" json:"created"`
Id int `db:"id" json:"id"`
CreatorId int `db:"creator_id" json:"creator_id"`
Uuid string `db:"uuid" json:"uuid"`
Type string `db:"type" json:"type"`
Name string `db:"name" json:"name"`
Username string `db:"username" json:"username"`
Password string `db:"password" json:"-"`
Email string `db:"email" json:"email"`
PrivacyName string `db:"privacy_name" json:"privacy_name"`
PrivacyVAT string `db:"privacy_vat" json:"privacy_vat"`
PrivacyAddress string `db:"privacy_address" json:"privacy_address"`
PrivacyEmail string `db:"privacy_email" json:"privacy_email"`
PrivacyDPO string `db:"privacy_dpo" json:"privacy_dpo"`
PrivacyDPOMail string `db:"privacy_dpo_mail" json:"privacy_dpo_mail"`
Created time.Time `db:"created" json:"created"`
}

type AccountJSON struct {
Expand All @@ -45,6 +51,12 @@ type AccountJSON struct {
Username string `json:"username"`
Password string `json:"password"`
Email string `json:"email"`
PrivacyName string `json:"privacy_name"`
PrivacyVAT string `json:"privacy_vat"`
PrivacyAddress string `json:"privacy_address"`
PrivacyEmail string `json:"privacy_email"`
PrivacyDPO string `json:"privacy_dpo"`
PrivacyDPOMail string `json:"privacy_dpo_mail"`
Created time.Time `json:"created"`
HotspotId int `json:"hotspot_id"`
HotspotName string `json:"hotspot_name"`
Expand Down
21 changes: 20 additions & 1 deletion sun/sun-ui/src/components/Hotspots.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,16 @@
<div>
<h2>{{ msg }}</h2>
<div v-if="isLoading" class="spinner spinner-lg"></div>
<div v-if="rows.length > 0 && !privacyFilled()" class="alert alert-warning alert-dismissable create-hotspot-warning">
<span class="pficon pficon-warning-triangle-o"></span>
<strong>{{ $t('hotspot.warning_privacy') }}!</strong> {{ $t('hotspot.warning_privacy_text') }} <a href="#/profile" class="alert-link">{{ $t('hotspot.profile_link') }}</a>
</div>
<button
v-if="rows.length > 0 && !isLoading && !isAdmin"
data-toggle="modal"
data-target="#HScreateModal"
class="btn btn-primary btn-lg create-hotspot"
:disabled="!privacyFilled()"
>{{ $t('hotspot.create_new') }}</button>
<div v-if="rows.length == 0 && !isLoading && !isAdmin" class="blank-slate-pf" id>
<div class="blank-slate-pf-icon">
Expand All @@ -19,8 +24,14 @@
data-toggle="modal"
data-target="#HScreateModal"
class="btn btn-primary btn-lg"
:disabled="!privacyFilled()"
>{{ $t('hotspot.create_new') }}</button>
</div>
<br/>
<div v-if="!privacyFilled()" class="alert alert-warning alert-dismissable">
<span class="pficon pficon-warning-triangle-o"></span>
<strong>{{ $t('hotspot.warning_privacy') }}!</strong> {{ $t('hotspot.warning_privacy_text') }} <a href="#/profile" class="alert-link">{{ $t('hotspot.profile_link') }}</a>
</div>
</div>
<div
v-if="rows.length > 0 && !isLoading"
Expand Down Expand Up @@ -410,7 +421,7 @@ export default {
selectedTosDisclaimerId: "",
privacyDisclaimers: [],
tosDisclaimers: [],
},
}
};
},
mounted() {
Expand All @@ -419,6 +430,14 @@ export default {
this.getDisclaimers();
},
methods: {
privacyFilled() {
return (
this.user.info.privacy_name.length > 0 &&
this.user.info.privacy_vat.length > 0 &&
this.user.info.privacy_address.length > 0 &&
this.user.info.privacy_email.length > 0
)
},
handlePerPage(evt) {
this.set("hotspots_per_page", evt.currentPerPage);
},
Expand Down
Loading

0 comments on commit 7a7f1b6

Please sign in to comment.