1from conans.errors import ConanException
2
3
4def users_list(localdb, remotes):
5    if not remotes:
6        raise ConanException("No remotes defined")
7
8    remotes_info = []
9    for remote in remotes:
10        user_info = {}
11        user, token, _ = localdb.get_login(remote.url)
12        user_info["name"] = remote.name
13        user_info["user_name"] = user
14        user_info["authenticated"] = True if token else False
15        remotes_info.append(user_info)
16    return remotes_info
17
18
19def token_present(localdb, remote, user):
20    current_user, token, _ = localdb.get_login(remote.url)
21    return token is not None and (user is None or user == current_user)
22
23
24def users_clean(localdb):
25    localdb.clean()
26
27
28def user_set(localdb, user, remote_name=None):
29    if user.lower() == "none":
30        user = None
31    return update_localdb(localdb, user, token=None, refresh_token=None, remote=remote_name)
32
33
34def update_localdb(localdb, user, token, refresh_token, remote):
35    previous_user = localdb.get_username(remote.url)
36    localdb.store(user, token, refresh_token, remote.url)
37    return remote.name, previous_user, user
38