mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
注册功能
This commit is contained in:
1 parent
f259106aa3
commit
6e28dd868e
8 files changed
+55
-39
No files matched your search
@@ -15,7 +15,7 @@ module.exports = {
|
||||
let begin_at = new Date(cur_time - cur_time % (period_secs * 1000));
|
||||
let expire_at = new Date(begin_at.getTime() + period_secs * 1000);
|
||||
try {
|
||||
await coll.find_one_and_update({
|
||||
await coll.findOneAndUpdate({
|
||||
ident, begin_at, expire_at,
|
||||
op: { $not: { $gte: max_operations } }
|
||||
}, { $inc: { op: 1 } }, { upsert: true });
|
||||
|
||||
@@ -11,7 +11,7 @@ module.exports = {
|
||||
* @param {number} tokenType type of the token.
|
||||
* @param {number} expireSeconds expire time, in seconds.
|
||||
* @param {object} data extra data.
|
||||
* @returns {string} token ID
|
||||
* @returns {Array} token ID, token data
|
||||
*/
|
||||
async add(tokenType, expireSeconds, data) {
|
||||
let now = new Date();
|
||||
@@ -62,7 +62,7 @@ module.exports = {
|
||||
* @returns {boolean} true if deleted, or false.
|
||||
*/
|
||||
async delete(tokenId, tokenType) {
|
||||
let result = await coll.delete_one({ _id: tokenId, tokenType });
|
||||
let result = await coll.deleteOne({ _id: tokenId, tokenType });
|
||||
return !!result.deletedCount;
|
||||
},
|
||||
|
||||
|
||||
+15
-10
@@ -1,8 +1,9 @@
|
||||
const
|
||||
{ UserNotFoundError, UserAlreadyExistError } = require('../error'),
|
||||
system = require('./system'),
|
||||
{ pwhash, validator } = require('../utils'),
|
||||
db = require('../service/db.js'),
|
||||
{ UserNotFoundError, UserAlreadyExistError } = require('../error'),
|
||||
{ pwhash } = require('../utils'),
|
||||
validator = require('../lib/validator'),
|
||||
db = require('../service/db'),
|
||||
coll = db.collection('user'),
|
||||
coll_role = db.collection('role');
|
||||
|
||||
@@ -40,10 +41,13 @@ async function getByUname(uname) {
|
||||
udoc.perm = role.perm;
|
||||
return new USER(udoc);
|
||||
}
|
||||
async function getByEmail(email) {
|
||||
async function getByEmail(email, ignoreMissing = false) {
|
||||
let emailLower = email.trim().toLowerCase();
|
||||
let udoc = await coll.findOne({ emailLower });
|
||||
if (!udoc) throw new UserNotFoundError(email);
|
||||
if (!udoc) {
|
||||
if (ignoreMissing) return null;
|
||||
else throw new UserNotFoundError(email);
|
||||
}
|
||||
let role = await coll_role.findOne({ _id: udoc.role || 'default' });
|
||||
udoc.perm = role.perm;
|
||||
return new USER(udoc);
|
||||
@@ -73,7 +77,7 @@ async function changePassword(uid, currentPassword, newPassword) {
|
||||
$set: { salt, hash: pwhash.hash(newPassword, salt) }
|
||||
});
|
||||
}
|
||||
async function create({ uid, email, uname, password, regip, perm = this.perm.PERM_DEFAULT || 0 }) {
|
||||
async function create({ uid, email, uname, password, regip = '127.0.0.1', role = 'default' }) {
|
||||
validator.checkUname(uname);
|
||||
validator.checkPassword(password);
|
||||
validator.checkEmail(email);
|
||||
@@ -81,21 +85,22 @@ async function create({ uid, email, uname, password, regip, perm = this.perm.PER
|
||||
if (!uid) uid = system.incUserCounter();
|
||||
try {
|
||||
await coll.insertOne({
|
||||
_id: uid,
|
||||
email,
|
||||
emailLower: email.strip().toLowerCase(),
|
||||
emailLower: email.trim().toLowerCase(),
|
||||
uname,
|
||||
unameLower: uname.strip().toLowerCase(),
|
||||
unameLower: uname.trim().toLowerCase(),
|
||||
password: pwhash.hash(password, salt),
|
||||
salt,
|
||||
regat: new Date(),
|
||||
regip,
|
||||
loginat: new Date(),
|
||||
loginip: regip,
|
||||
perm,
|
||||
role,
|
||||
gravatar: email
|
||||
});
|
||||
} catch (e) {
|
||||
throw new UserAlreadyExistError(uid, uname, email);
|
||||
throw new UserAlreadyExistError([uid, uname, email]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user