Allow users to migrate from level 0 to 1
This commit is contained in:
parent
78c3443a92
commit
33070b62f1
106
src/user.rs
106
src/user.rs
|
@ -449,11 +449,11 @@ impl User {
|
|||
};
|
||||
|
||||
// Can we level up the main credential?
|
||||
let can_level_up = reachcred.is_some()
|
||||
&& (level == 0
|
||||
&& eligible_for_trust_promotion(&config.la_net, &self.primary_cred).await
|
||||
|| level > 0
|
||||
&& eligible_for_level_up(&config.la_net, &self.primary_cred).await);
|
||||
let can_level_up = level == 0
|
||||
&& eligible_for_trust_promotion(&config.la_net, &self.primary_cred).await
|
||||
|| reachcred.is_some()
|
||||
&& level > 0
|
||||
&& eligible_for_level_up(&config.la_net, &self.primary_cred).await;
|
||||
|
||||
// Can we migrate the main credential?
|
||||
let can_migrate = reachcred.is_none() && level >= MIN_TRUST_LEVEL;
|
||||
|
@ -608,8 +608,6 @@ impl User {
|
|||
// let's just allow it.
|
||||
|
||||
if can_level_up {
|
||||
// If we can level up/trust migrate, do so
|
||||
|
||||
// Trust migration from level 0 to level 1
|
||||
let cred = if level == 0 {
|
||||
trust_migration(
|
||||
|
@ -653,6 +651,7 @@ impl User {
|
|||
get_migration_pub(&config.la_pubkeys),
|
||||
)
|
||||
.await?;
|
||||
|
||||
self.primary_cred = cred;
|
||||
self.secondary_cred = None;
|
||||
} else if second_level_up {
|
||||
|
@ -672,6 +671,7 @@ impl User {
|
|||
get_migration_pub(&config.la_pubkeys),
|
||||
)
|
||||
.await?;
|
||||
|
||||
self.primary_cred = cred;
|
||||
self.secondary_cred = None;
|
||||
} else if second_cred.is_some() {
|
||||
|
@ -783,56 +783,56 @@ impl User {
|
|||
}
|
||||
|
||||
// Censor user tries to level up their primary credential
|
||||
if reachcred.is_some() {
|
||||
if level == 0 && eligible_for_trust_promotion(&config.la_net, &self.primary_cred).await
|
||||
|| level > 0 && eligible_for_level_up(&config.la_net, &self.primary_cred).await
|
||||
{
|
||||
let new_cred = if level == 0 {
|
||||
trust_migration(
|
||||
if level == 0 && eligible_for_trust_promotion(&config.la_net, &self.primary_cred).await
|
||||
|| reachcred.is_some()
|
||||
&& level > 0
|
||||
&& eligible_for_level_up(&config.la_net, &self.primary_cred).await
|
||||
{
|
||||
let new_cred = if level == 0 {
|
||||
trust_migration(
|
||||
&config.la_net,
|
||||
&self.primary_cred,
|
||||
&trust_promotion(
|
||||
&config.la_net,
|
||||
&self.primary_cred,
|
||||
&trust_promotion(
|
||||
&config.la_net,
|
||||
&self.primary_cred,
|
||||
get_lox_pub(&config.la_pubkeys),
|
||||
)
|
||||
.await?,
|
||||
get_lox_pub(&config.la_pubkeys),
|
||||
get_migration_pub(&config.la_pubkeys),
|
||||
)
|
||||
.await?
|
||||
} else {
|
||||
level_up(
|
||||
&config.la_net,
|
||||
&self.primary_cred,
|
||||
&reachcred.unwrap(),
|
||||
get_lox_pub(&config.la_pubkeys),
|
||||
get_reachability_pub(&config.la_pubkeys),
|
||||
)
|
||||
.await?
|
||||
};
|
||||
self.primary_cred = new_cred;
|
||||
let (bucket, _reachcred) = get_bucket(&config.la_net, &self.primary_cred).await?;
|
||||
// Make sure each bridge is in global bridges set and
|
||||
// known by censor
|
||||
for bl in bucket {
|
||||
let fingerprint = bl.get_hashed_fingerprint();
|
||||
if !bridges.contains_key(&fingerprint) {
|
||||
let bridge = Bridge::from_bridge_line(&bl);
|
||||
bridges.insert(fingerprint, bridge);
|
||||
}
|
||||
censor.learn_bridge(&fingerprint);
|
||||
if level == 2 {
|
||||
// level up to 3
|
||||
// Give censor an additional credential
|
||||
censor.give_lox_cred(&fingerprint, &self.primary_cred, true);
|
||||
} else if level > 2 {
|
||||
// level up to 4
|
||||
// Replace censor's credential with newer one,
|
||||
// but don't add to count of censor's
|
||||
// credentials
|
||||
censor.give_lox_cred(&fingerprint, &self.primary_cred, false);
|
||||
}
|
||||
.await?,
|
||||
get_lox_pub(&config.la_pubkeys),
|
||||
get_migration_pub(&config.la_pubkeys),
|
||||
)
|
||||
.await?
|
||||
} else {
|
||||
level_up(
|
||||
&config.la_net,
|
||||
&self.primary_cred,
|
||||
&reachcred.unwrap(),
|
||||
get_lox_pub(&config.la_pubkeys),
|
||||
get_reachability_pub(&config.la_pubkeys),
|
||||
)
|
||||
.await?
|
||||
};
|
||||
self.primary_cred = new_cred;
|
||||
let (bucket, _reachcred) = get_bucket(&config.la_net, &self.primary_cred).await?;
|
||||
// Make sure each bridge is in global bridges set and
|
||||
// known by censor
|
||||
for bl in bucket {
|
||||
let fingerprint = bl.get_hashed_fingerprint();
|
||||
if !bridges.contains_key(&fingerprint) {
|
||||
let bridge = Bridge::from_bridge_line(&bl);
|
||||
bridges.insert(fingerprint, bridge);
|
||||
}
|
||||
censor.learn_bridge(&fingerprint);
|
||||
if level == 2 {
|
||||
// level up to 3
|
||||
// Give censor an additional credential
|
||||
censor.give_lox_cred(&fingerprint, &self.primary_cred, true);
|
||||
} else if level > 2 {
|
||||
// level up to 4
|
||||
// Replace censor's credential with newer one,
|
||||
// but don't add to count of censor's
|
||||
// credentials
|
||||
censor.give_lox_cred(&fingerprint, &self.primary_cred, false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue