Browse Source

fix multiple login same account

pull/18/head
Sun 4 years ago
parent
commit
8a59be3603
  1. 10
      src/group.rs
  2. 6
      src/rpc.rs

10
src/group.rs

@ -393,18 +393,20 @@ impl Group { @@ -393,18 +393,20 @@ impl Group {
addrs
}
pub fn add_running(&mut self, gid: &GroupId, lock: &str) -> Result<i64> {
pub fn add_running(&mut self, gid: &GroupId, lock: &str) -> Result<(i64, bool)> {
if let Some(u) = self.accounts.get(gid) {
let keypair = u.secret(&self.secret, lock)?;
if !self.runnings.contains_key(gid) {
// load devices to runnings.
let running = RunningAccount::init(keypair, &self.base, gid)?;
self.runnings.insert(gid.clone(), running);
return Ok(u.id);
Ok((u.id, false))
} else {
Ok((u.id, true))
}
} else {
Err(anyhow!("user missing."))
}
Err(anyhow!("user missing."))
}
pub fn clone_user(&self, gid: &GroupId) -> Result<User> {

6
src/rpc.rs

@ -365,7 +365,11 @@ fn new_rpc_handler( @@ -365,7 +365,11 @@ fn new_rpc_handler(
let mut results = HandleResult::rpc(json!([ogid.to_hex()]));
let id = state.group.write().await.add_running(&ogid, me_lock)?;
let (id, running) = state.group.write().await.add_running(&ogid, me_lock)?;
if running {
return Ok(results);
}
// add AddGroup to TDN.
results.networks.push(NetworkType::AddGroup(ogid));

Loading…
Cancel
Save