blob: 367961bfc8a187325f5ca12873483a03df7e2962 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
//
// An account is an abstraction of a user and a provider.
// The user part is optional, so an Account might just represent a provider.
//
import bitmask from 'lib/bitmask'
export default class Account {
constructor(address, props={}) {
if (!address.match('@')) {
this._address = '@' + address
} else {
this._address = address
}
this._authenticated = props.authenticated
}
//
// currently, bitmask.js uses address for id, so we return address here too.
// also, we don't know uuid until after authentication.
//
// TODO: change to uuid when possible.
//
get id() {
return this._address
}
get domain() {
return this._address.split('@')[1]
}
get address() {
return this._address
}
get userpart() {
return this._address.split('@')[0]
}
get authenticated() {
return this._authenticated
}
//
// returns a promise, fulfill is passed account object
//
login(password) {
return bitmask.user.auth(this.address, password).then(
response => {
if (response.uuid) {
this._uuid = response.uuid
this._authenticated = true
}
return this
}
)
}
//
// returns a promise, fulfill is passed account object
//
logout() {
return bitmask.user.logout(this.id).then(
response => {
this._authenticated = false
this._address = '@' + this.domain
return this
}
)
}
//
// returns a promise, fullfill is passed account object
//
static active() {
return bitmask.user.active().then(
response => {
if (response.user == '<none>') {
return null
} else {
return new Account(response.user, {authenticated: true})
}
}
)
}
}
|