initial
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import * as plugins from './plugins.js';
|
||||
import { UserManager } from './classes.usermanager.js';
|
||||
|
||||
/**
|
||||
* a User is identified by its username or email.
|
||||
* Both need to be unique and both can be changed.
|
||||
*/
|
||||
@plugins.smartdata.Manager()
|
||||
export class User extends plugins.smartdata.SmartDataDbDoc<
|
||||
User,
|
||||
plugins.lointReception.data.IUser
|
||||
> {
|
||||
// STATIC
|
||||
public static async createNewUserForUserData(
|
||||
userDataArg: plugins.lointReception.data.IUser['data']
|
||||
): Promise<User> {
|
||||
const newUser = new User();
|
||||
newUser.id = plugins.smartunique.shortId();
|
||||
newUser.data = {
|
||||
connectedOrgs: null,
|
||||
status: 'new',
|
||||
name: userDataArg.name,
|
||||
username: userDataArg.username,
|
||||
email: userDataArg.email,
|
||||
passwordHash: userDataArg.passwordHash,
|
||||
};
|
||||
if (!newUser.data.passwordHash && userDataArg.password) {
|
||||
newUser.data.passwordHash = await User.hashPassword(userDataArg.password);
|
||||
}
|
||||
await newUser.save();
|
||||
return newUser;
|
||||
}
|
||||
|
||||
public static hashPassword(passwordArg: string) {
|
||||
return plugins.smarthash.sha256FromString(passwordArg);
|
||||
}
|
||||
|
||||
// INSTANCE
|
||||
@plugins.smartdata.unI()
|
||||
id: string;
|
||||
|
||||
@plugins.smartdata.svDb()
|
||||
public data: plugins.lointReception.data.IUser['data'];
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
public setLegalData() {}
|
||||
}
|
||||
Reference in New Issue
Block a user