Allow users to migrate from level 0 to 1

This commit is contained in:
Vecna 2024-07-05 12:59:24 -04:00
parent 78c3443a92
commit 33070b62f1
1 changed files with 53 additions and 53 deletions

View File

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