diff --git a/deploy/ansible/roles/icarodb/files/icaro.sql b/deploy/ansible/roles/icarodb/files/icaro.sql index 0a518a67f..6fdf44949 100644 --- a/deploy/ansible/roles/icarodb/files/icaro.sql +++ b/deploy/ansible/roles/icarodb/files/icaro.sql @@ -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`), @@ -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, diff --git a/sun/sun-api/methods/accounts.go b/sun/sun-api/methods/accounts.go index 155c18379..5432c867f 100644 --- a/sun/sun-api/methods/accounts.go +++ b/sun/sun-api/methods/accounts.go @@ -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 @@ -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) diff --git a/sun/sun-api/models/account.go b/sun/sun-api/models/account.go index ea11218a5..4fe37b9b9 100644 --- a/sun/sun-api/models/account.go +++ b/sun/sun-api/models/account.go @@ -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 { @@ -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"` diff --git a/sun/sun-ui/src/components/Profile.vue b/sun/sun-ui/src/components/Profile.vue index 7d97e96da..98e1b61f8 100644 --- a/sun/sun-ui/src/components/Profile.vue +++ b/sun/sun-ui/src/components/Profile.vue @@ -40,6 +40,69 @@ + + +
+
+
+

+ {{ $t("profile.privacy_fields") }} +
+
+

+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+
@@ -72,6 +135,7 @@
+
{ + this.privacy.isLoading = false; + }, + error => { + this.privacy.isLoading = false; + console.error(error.body.message); + }); } } }; diff --git a/sun/sun-ui/src/i18n/locale-en.json b/sun/sun-ui/src/i18n/locale-en.json index 20b1f4a3b..6d4e73acc 100644 --- a/sun/sun-ui/src/i18n/locale-en.json +++ b/sun/sun-ui/src/i18n/locale-en.json @@ -40,7 +40,14 @@ "default_disclaimer": "Default disclaimers", "privacy_disclaimer": "Privacy disclaimer", "tos_disclaimer": "Terms of use disclaimer", - "default": "Default" + "default": "Default", + "privacy_fields": "Privacy fields", + "privacy_name": "Reseller's business name", + "privacy_vat": "Reseller's business VAT", + "privacy_address": "Reseller's business address", + "privacy_email": "Reseller's business email", + "privacy_dpo": "Reseller's business DPO (optional)", + "privacy_dpo_mail": "Reseller's business DPO email (optional)" }, "hotspot": { "yes": "Yes",