Security stage (user login) mostly completed.
This commit is contained in:
Generated
+30
-30
@@ -512,9 +512,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.2.62"
|
version = "1.2.63"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98"
|
checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"find-msvc-tools",
|
"find-msvc-tools",
|
||||||
"jobserver",
|
"jobserver",
|
||||||
@@ -1872,14 +1872,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libredox"
|
name = "libredox"
|
||||||
version = "0.1.16"
|
version = "0.1.17"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c"
|
checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.11.1",
|
"bitflags 2.11.1",
|
||||||
"libc",
|
"libc",
|
||||||
"plain",
|
"plain",
|
||||||
"redox_syscall 0.7.5",
|
"redox_syscall 0.8.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1957,9 +1957,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.8.0"
|
version = "2.8.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memmap2"
|
name = "memmap2"
|
||||||
@@ -2755,7 +2755,7 @@ version = "3.5.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
|
checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"toml_edit 0.25.11+spec-1.1.0",
|
"toml_edit 0.25.12+spec-1.1.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2997,9 +2997,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "redox_syscall"
|
name = "redox_syscall"
|
||||||
version = "0.7.5"
|
version = "0.8.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4666a1a60d8412eab19d94f6d13dcc9cea0a5ef4fdf6a5db306537413c661b1b"
|
checksum = "7c7591fa2c6b601dfcfe5f043f65a1c39fcdf50efefcd7f1572e538c1f4b398d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.11.1",
|
"bitflags 2.11.1",
|
||||||
]
|
]
|
||||||
@@ -3278,9 +3278,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "shlex"
|
name = "shlex"
|
||||||
version = "1.3.0"
|
version = "2.0.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "signal-hook-registry"
|
name = "signal-hook-registry"
|
||||||
@@ -3676,9 +3676,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "toml_edit"
|
name = "toml_edit"
|
||||||
version = "0.25.11+spec-1.1.0"
|
version = "0.25.12+spec-1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b"
|
checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"indexmap",
|
"indexmap",
|
||||||
"toml_datetime 1.1.1+spec-1.1.0",
|
"toml_datetime 1.1.1+spec-1.1.0",
|
||||||
@@ -3819,9 +3819,9 @@ checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "uuid"
|
name = "uuid"
|
||||||
version = "1.23.1"
|
version = "1.23.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76"
|
checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"js-sys",
|
"js-sys",
|
||||||
"serde_core",
|
"serde_core",
|
||||||
@@ -4548,9 +4548,9 @@ checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zbus"
|
name = "zbus"
|
||||||
version = "5.15.0"
|
version = "5.16.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1"
|
checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-broadcast",
|
"async-broadcast",
|
||||||
"async-executor",
|
"async-executor",
|
||||||
@@ -4583,9 +4583,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zbus_macros"
|
name = "zbus_macros"
|
||||||
version = "5.15.0"
|
version = "5.16.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff"
|
checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-crate",
|
"proc-macro-crate",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@@ -4615,18 +4615,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zerocopy"
|
name = "zerocopy"
|
||||||
version = "0.8.48"
|
version = "0.8.50"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
|
checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"zerocopy-derive",
|
"zerocopy-derive",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zerocopy-derive"
|
name = "zerocopy-derive"
|
||||||
version = "0.8.48"
|
version = "0.8.50"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
|
checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@@ -4665,9 +4665,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zvariant"
|
name = "zvariant"
|
||||||
version = "5.11.0"
|
version = "5.12.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1c1567a6ec68df868cbbfde844cfc6d81649fe5109a62b116b19fabd53e618ee"
|
checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"endi",
|
"endi",
|
||||||
"enumflags2",
|
"enumflags2",
|
||||||
@@ -4679,9 +4679,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zvariant_derive"
|
name = "zvariant_derive"
|
||||||
version = "5.11.0"
|
version = "5.12.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c7d5b780599bbde114e39d9a0799577fad1ced5105d38515745f7b3099d8ceda"
|
checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-crate",
|
"proc-macro-crate",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
@@ -4692,9 +4692,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "zvariant_utils"
|
name = "zvariant_utils"
|
||||||
version = "3.3.1"
|
version = "3.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691"
|
checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
|||||||
+4
-2
@@ -43,6 +43,8 @@
|
|||||||
"security.user_full_name": "User full name/description",
|
"security.user_full_name": "User full name/description",
|
||||||
"security.user_password": "User password",
|
"security.user_password": "User password",
|
||||||
"security.reuse_user_password": "Reuse user password for root user",
|
"security.reuse_user_password": "Reuse user password for root user",
|
||||||
"security.root_password": "Root password"
|
"security.root_password": "Root password",
|
||||||
|
"security.pass_low": "low security",
|
||||||
|
"security.pass_middle": "normal security",
|
||||||
|
"security.pass_hight": "hight security"
|
||||||
}
|
}
|
||||||
+141
-32
@@ -18,13 +18,46 @@
|
|||||||
This is Security stage, setup users logins and such
|
This is Security stage, setup users logins and such
|
||||||
*/
|
*/
|
||||||
|
|
||||||
use crate::{
|
use crate::stage::{StageAction, StageResult};
|
||||||
kira_theming,
|
use iced::{Alignment, Color, widget};
|
||||||
stage::{StageAction, StageResult},
|
|
||||||
};
|
|
||||||
use iced::{Alignment, widget};
|
|
||||||
use rust_i18n::t;
|
use rust_i18n::t;
|
||||||
|
|
||||||
|
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||||
|
enum PasswordStrenght {
|
||||||
|
Low,
|
||||||
|
Middle,
|
||||||
|
Hight,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PasswordStrenght {
|
||||||
|
pub fn from_password(password: &str) -> Self {
|
||||||
|
if password.len() < 8 {
|
||||||
|
Self::Low
|
||||||
|
} else if password.len() < 16 {
|
||||||
|
Self::Middle
|
||||||
|
} else {
|
||||||
|
Self::Hight
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn color(&self) -> Color {
|
||||||
|
match self {
|
||||||
|
Self::Low => Color::from_rgb8(212, 32, 32),
|
||||||
|
Self::Middle => Color::from_rgb8(212, 212, 32),
|
||||||
|
Self::Hight => Color::from_rgb8(32, 212, 32),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl std::fmt::Display for PasswordStrenght {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
match self {
|
||||||
|
Self::Low => f.write_str(t!("security.pass_low").as_ref()),
|
||||||
|
Self::Middle => f.write_str(t!("security.pass_middle").as_ref()),
|
||||||
|
Self::Hight => f.write_str(t!("security.pass_hight").as_ref()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct SecurityStage {
|
pub struct SecurityStage {
|
||||||
user_name: String,
|
user_name: String,
|
||||||
@@ -34,6 +67,8 @@ pub struct SecurityStage {
|
|||||||
reuse_user_password_for_roor: bool,
|
reuse_user_password_for_roor: bool,
|
||||||
user_pass_is_secure: bool,
|
user_pass_is_secure: bool,
|
||||||
root_pass_is_secure: bool,
|
root_pass_is_secure: bool,
|
||||||
|
user_password_strenght: PasswordStrenght,
|
||||||
|
root_password_strenght: PasswordStrenght,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
@@ -46,7 +81,7 @@ pub enum Message {
|
|||||||
ToggleUserPassSecure,
|
ToggleUserPassSecure,
|
||||||
ToggleRootPassSecure,
|
ToggleRootPassSecure,
|
||||||
Next,
|
Next,
|
||||||
Exit,
|
Back,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Mothod safely retain first n chars in utf-8 string avoiding cutting utf-8 char in the middle
|
/// Mothod safely retain first n chars in utf-8 string avoiding cutting utf-8 char in the middle
|
||||||
@@ -67,6 +102,8 @@ impl SecurityStage {
|
|||||||
reuse_user_password_for_roor: false,
|
reuse_user_password_for_roor: false,
|
||||||
user_pass_is_secure: true,
|
user_pass_is_secure: true,
|
||||||
root_pass_is_secure: true,
|
root_pass_is_secure: true,
|
||||||
|
user_password_strenght: PasswordStrenght::Low,
|
||||||
|
root_password_strenght: PasswordStrenght::Low,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,8 +118,11 @@ impl SecurityStage {
|
|||||||
|
|
||||||
pub fn update(&mut self, message: Message) -> StageAction {
|
pub fn update(&mut self, message: Message) -> StageAction {
|
||||||
match message {
|
match message {
|
||||||
Message::ToggleReusePass(v) => {
|
Message::ToggleReusePass(reuse_pass) => {
|
||||||
self.reuse_user_password_for_roor = v;
|
self.reuse_user_password_for_roor = reuse_pass;
|
||||||
|
if reuse_pass {
|
||||||
|
self.root_password = self.user_password.clone();
|
||||||
|
}
|
||||||
StageAction::None
|
StageAction::None
|
||||||
}
|
}
|
||||||
Message::UserNameChange(u_name) => {
|
Message::UserNameChange(u_name) => {
|
||||||
@@ -97,65 +137,134 @@ impl SecurityStage {
|
|||||||
Message::UserFullNameChange(f_name) => {
|
Message::UserFullNameChange(f_name) => {
|
||||||
let mut res = f_name.clone();
|
let mut res = f_name.clone();
|
||||||
res.retain(|c| c.is_alphanumeric() || ['_', '-', ' ', '.', ','].contains(&c));
|
res.retain(|c| c.is_alphanumeric() || ['_', '-', ' ', '.', ','].contains(&c));
|
||||||
self.user_full_name = retain_first_n(res.trim(), 128).to_string();
|
self.user_full_name = retain_first_n(&res, 128).to_string();
|
||||||
StageAction::None
|
StageAction::None
|
||||||
}
|
}
|
||||||
Message::UserPasswordChange(u_pass) => {
|
Message::UserPasswordChange(u_pass) => {
|
||||||
let mut res = u_pass.trim().to_string();
|
let mut res = u_pass;
|
||||||
res.retain(|c: char| !c.is_control());
|
res.retain(|c: char| !c.is_control());
|
||||||
self.user_password = res.trim().to_string();
|
self.user_password = res;
|
||||||
|
self.user_password_strenght = PasswordStrenght::from_password(&self.user_password);
|
||||||
if self.reuse_user_password_for_roor {
|
if self.reuse_user_password_for_roor {
|
||||||
|
self.root_password_strenght = self.user_password_strenght;
|
||||||
self.root_password = self.user_password.clone();
|
self.root_password = self.user_password.clone();
|
||||||
}
|
}
|
||||||
StageAction::None
|
StageAction::None
|
||||||
}
|
}
|
||||||
Message::RootPasswordChange(r_pass) => {
|
Message::RootPasswordChange(r_pass) => {
|
||||||
let mut res = r_pass.trim().to_string();
|
let mut res: String = r_pass;
|
||||||
res.retain(|c: char| !c.is_control());
|
res.retain(|c: char| !c.is_control());
|
||||||
self.root_password = res.trim().to_string();
|
self.root_password = res;
|
||||||
|
self.root_password_strenght = PasswordStrenght::from_password(&self.root_password);
|
||||||
StageAction::None
|
StageAction::None
|
||||||
},
|
}
|
||||||
Message::ToggleUserPassSecure => {
|
Message::ToggleUserPassSecure => {
|
||||||
self.user_pass_is_secure = !self.user_pass_is_secure;
|
self.user_pass_is_secure = !self.user_pass_is_secure;
|
||||||
StageAction::None
|
StageAction::None
|
||||||
},
|
}
|
||||||
Message::ToggleRootPassSecure => {
|
Message::ToggleRootPassSecure => {
|
||||||
self.root_pass_is_secure = !self.root_pass_is_secure;
|
self.root_pass_is_secure = !self.root_pass_is_secure;
|
||||||
StageAction::None
|
StageAction::None
|
||||||
},
|
}
|
||||||
Message::Exit => StageAction::Abort,
|
Message::Back => StageAction::Back,
|
||||||
Message::Next => StageAction::Next(self.gen_result()),
|
Message::Next => StageAction::Next(self.gen_result()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn view(&self) -> iced::Element<'_, Message> {
|
pub fn view(&self) -> iced::Element<'_, Message> {
|
||||||
let next_button = widget::button(widget::text(t!("button.next"))).on_press(Message::Next);
|
let back_button = widget::button(widget::text(t!("button.back"))).on_press(Message::Back);
|
||||||
let exit_button = widget::button(widget::text(t!("button.exit"))).on_press(Message::Exit);
|
let next_button = if self.user_name.is_empty()
|
||||||
|
|| self.user_password.is_empty()
|
||||||
|
|| self.root_password.is_empty()
|
||||||
|
{
|
||||||
|
widget::button(widget::text(t!("button.next")))
|
||||||
|
} else {
|
||||||
|
widget::button(widget::text(t!("button.next"))).on_press(Message::Next)
|
||||||
|
};
|
||||||
|
|
||||||
|
let user_pass_sec_text = if self.user_pass_is_secure {
|
||||||
|
widget::text("👁")
|
||||||
|
} else {
|
||||||
|
widget::text("*")
|
||||||
|
};
|
||||||
|
let root_pass_sec_text = if self.root_pass_is_secure {
|
||||||
|
widget::text("👁")
|
||||||
|
} else {
|
||||||
|
widget::text("*")
|
||||||
|
};
|
||||||
|
let user_pass_sec_text = user_pass_sec_text
|
||||||
|
.width(12)
|
||||||
|
.align_x(Alignment::Center)
|
||||||
|
.align_y(Alignment::Center);
|
||||||
|
let root_pass_sec_text = root_pass_sec_text
|
||||||
|
.width(12)
|
||||||
|
.align_x(Alignment::Center)
|
||||||
|
.align_y(Alignment::Center);
|
||||||
|
let mut root_pass_input =
|
||||||
|
widget::text_input("", &self.root_password).secure(self.root_pass_is_secure);
|
||||||
|
if !self.reuse_user_password_for_roor {
|
||||||
|
root_pass_input = root_pass_input.on_input(Message::RootPasswordChange);
|
||||||
|
}
|
||||||
|
|
||||||
|
let user_p_strenght_text = widget::text(self.user_password_strenght.to_string())
|
||||||
|
.color(self.user_password_strenght.color());
|
||||||
|
let root_p_strenght_text = widget::text(self.root_password_strenght.to_string())
|
||||||
|
.color(self.root_password_strenght.color());
|
||||||
|
|
||||||
let user_pass_sec_text = if self.user_pass_is_secure {widget::text("👁")} else {widget::text("*")};
|
|
||||||
let root_pass_sec_text = if self.root_pass_is_secure {widget::text("👁")} else {widget::text("*")};
|
|
||||||
let mut root_pass_input = widget::text_input("", &self.root_password).secure(self.root_pass_is_secure);
|
|
||||||
if self.reuse_user_password_for_roor {root_pass_input = root_pass_input.on_input(Message::RootPasswordChange);}
|
|
||||||
widget::column![
|
widget::column![
|
||||||
widget::container(
|
widget::container(
|
||||||
|
widget::column![
|
||||||
widget::column![
|
widget::column![
|
||||||
widget::text(t!("security.user_name")),
|
widget::text(t!("security.user_name")),
|
||||||
widget::text_input("", &self.user_name).on_input(Message::UserNameChange),
|
widget::text_input("", &self.user_name)
|
||||||
|
.width(256)
|
||||||
|
.on_input(Message::UserNameChange)
|
||||||
|
],
|
||||||
|
widget::column![
|
||||||
widget::text(t!("security.user_full_name")),
|
widget::text(t!("security.user_full_name")),
|
||||||
widget::text_input("", &self.user_full_name).on_input(Message::UserFullNameChange),
|
widget::text_input("", &self.user_full_name)
|
||||||
|
.width(256)
|
||||||
|
.on_input(Message::UserFullNameChange)
|
||||||
|
],
|
||||||
|
widget::column![
|
||||||
widget::text(t!("security.user_password")),
|
widget::text(t!("security.user_password")),
|
||||||
widget::row![
|
widget::row![
|
||||||
widget::text_input("", &self.user_password).on_input(Message::UserPasswordChange)
|
widget::text_input("", &self.user_password)
|
||||||
|
.width(512)
|
||||||
|
.on_input(Message::UserPasswordChange)
|
||||||
.secure(self.user_pass_is_secure),
|
.secure(self.user_pass_is_secure),
|
||||||
widget::button(user_pass_sec_text).on_press(Message::ToggleUserPassSecure),
|
widget::button(user_pass_sec_text)
|
||||||
|
.on_press(Message::ToggleUserPassSecure),
|
||||||
|
widget::container(user_p_strenght_text)
|
||||||
|
.align_x(Alignment::Center)
|
||||||
|
.style(widget::container::bordered_box)
|
||||||
|
.style(widget::container::rounded_box)
|
||||||
|
.padding(6)
|
||||||
|
.width(160),
|
||||||
|
]
|
||||||
|
.spacing(5)
|
||||||
|
.align_y(Alignment::Center)
|
||||||
],
|
],
|
||||||
widget::rule::horizontal(2),
|
widget::rule::horizontal(2),
|
||||||
|
widget::column![
|
||||||
widget::text(t!("security.root_password")),
|
widget::text(t!("security.root_password")),
|
||||||
widget::row![
|
widget::row![
|
||||||
root_pass_input,
|
root_pass_input.width(512),
|
||||||
widget::button(root_pass_sec_text).on_press(Message::ToggleRootPassSecure),
|
widget::button(root_pass_sec_text)
|
||||||
|
.on_press(Message::ToggleRootPassSecure),
|
||||||
|
widget::container(root_p_strenght_text)
|
||||||
|
.align_x(Alignment::Center)
|
||||||
|
.style(widget::container::rounded_box)
|
||||||
|
.style(widget::container::bordered_box)
|
||||||
|
.padding(6)
|
||||||
|
.width(160),
|
||||||
|
]
|
||||||
|
.spacing(5)
|
||||||
|
.align_y(Alignment::Center),
|
||||||
|
widget::checkbox(self.reuse_user_password_for_roor)
|
||||||
|
.label(t!("security.reuse_user_password"))
|
||||||
|
.on_toggle(Message::ToggleReusePass),
|
||||||
],
|
],
|
||||||
|
|
||||||
]
|
]
|
||||||
.padding(10)
|
.padding(10)
|
||||||
.spacing(10)
|
.spacing(10)
|
||||||
@@ -166,9 +275,9 @@ impl SecurityStage {
|
|||||||
.align_x(Alignment::Center)
|
.align_x(Alignment::Center)
|
||||||
.align_y(Alignment::Center),
|
.align_y(Alignment::Center),
|
||||||
widget::row![
|
widget::row![
|
||||||
exit_button,
|
back_button,
|
||||||
widget::space::horizontal(), // Pushes the right button to the far right
|
widget::space::horizontal(), // Pushes the right button to the far right
|
||||||
next_button
|
next_button,
|
||||||
]
|
]
|
||||||
.width(iced::Length::Fill)
|
.width(iced::Length::Fill)
|
||||||
.align_y(Alignment::End)
|
.align_y(Alignment::End)
|
||||||
|
|||||||
Reference in New Issue
Block a user