48 lines
975 B
JavaScript
48 lines
975 B
JavaScript
import { Collection, Model } from 'vue-mc';
|
|
import JwtDecode from 'jwt-decode';
|
|
|
|
export class User extends Model {
|
|
static defaults() {
|
|
return {
|
|
id: null,
|
|
uuid: '',
|
|
username: '',
|
|
email: '',
|
|
name_first: '',
|
|
name_last: '',
|
|
language: 'en',
|
|
root_admin: false,
|
|
}
|
|
}
|
|
|
|
static mutations() {
|
|
return {
|
|
id: Number,
|
|
uuid: String,
|
|
username: String,
|
|
email: String,
|
|
name_first: String,
|
|
name_last: String,
|
|
language: String,
|
|
root_admin: Boolean,
|
|
}
|
|
}
|
|
|
|
static fromJWT(token) {
|
|
return new User(JwtDecode(token).user || {});
|
|
}
|
|
}
|
|
|
|
export class UserCollection extends Collection {
|
|
static model() {
|
|
return User;
|
|
}
|
|
|
|
get todo() {
|
|
return this.sum('done');
|
|
}
|
|
|
|
get done() {
|
|
return this.todo === 0;
|
|
}
|
|
}
|