mirror of
https://github.com/leanote/desktop-app.git
synced 2025-10-15 15:41:19 +00:00
add node_modules
This commit is contained in:
356
node_modules/user.js
generated
vendored
Normal file
356
node_modules/user.js
generated
vendored
Normal file
@@ -0,0 +1,356 @@
|
||||
var Evt = require('evt');
|
||||
var db = require('db');
|
||||
var fs = require('fs');
|
||||
var Common = require('common');
|
||||
|
||||
function log(o) {
|
||||
console.log(o);
|
||||
}
|
||||
|
||||
/**
|
||||
UserId (主键)
|
||||
Email
|
||||
Username
|
||||
Token
|
||||
LastLoginTime
|
||||
IsActive // 是否是活跃用户
|
||||
*/
|
||||
// var User = {}
|
||||
|
||||
var Api = null; // require('api');
|
||||
// 用户基本信息
|
||||
User = {
|
||||
token: '',
|
||||
userId: '',
|
||||
email: '',
|
||||
username: '',
|
||||
host: '', // 服务
|
||||
LastSyncUsn: -1,
|
||||
LastSyncTime: null,
|
||||
// add local account support flag
|
||||
// see https://github.com/leanote/desktop-app/issues/36
|
||||
local: null,
|
||||
// 登录后保存当前
|
||||
setCurUser: function(user) {
|
||||
var me = this;
|
||||
if(user) {
|
||||
this.token = user.Token;
|
||||
this.userId = user.UserId;
|
||||
this.email = user.Email;
|
||||
this.username = user.Username;
|
||||
this.host = user.Host; // http://leanote.com, http://localhost
|
||||
this.local = user.IsLocal;
|
||||
// 保存到数据库中
|
||||
this.saveCurUser(user);
|
||||
|
||||
// 判断当前用户是否有文件夹
|
||||
me.setUserDataPath();
|
||||
}
|
||||
},
|
||||
|
||||
// 登录
|
||||
login: function(username, password, host, callback) {
|
||||
var me = this;
|
||||
// 先本地验证
|
||||
console.log('login');
|
||||
db.users.findOne({Username: username, IsLocal: true}, function(err, user) {
|
||||
console.log('login end');
|
||||
if(err || !user || !user.UserId || user.Pwd != password) {
|
||||
if(!Api) {
|
||||
Api = require('api');
|
||||
}
|
||||
// 远程验证
|
||||
Api.auth(username, password, host, function(ret) {
|
||||
if(ret.Ok) {
|
||||
callback(true);
|
||||
} else {
|
||||
callback(false);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
me.saveCurUser(user, function() {
|
||||
callback(true);
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 创建本地帐户
|
||||
createLocalUser: function(useranme, pwd, callback) {
|
||||
var me = this;
|
||||
db.users.count({Username: useranme}, function(err, count) {
|
||||
if(count == 0) {
|
||||
var user = {};
|
||||
user.Username = useranme;
|
||||
user.IsLocal = true;
|
||||
user.IsActive = true;
|
||||
user.Pwd = pwd;
|
||||
user.UserId = Common.objectId();
|
||||
db.users.insert(user, function(err, doc) {
|
||||
// 创建默认的笔记本
|
||||
if (!err) {
|
||||
// 设为当前user
|
||||
me.saveCurUser(doc);
|
||||
|
||||
me.userId = user.UserId;
|
||||
var Notebook = require('notebook');
|
||||
var notebookId = Common.objectId();
|
||||
Notebook.addNotebook(notebookId, 'Leanote', '', function (notebook) {
|
||||
if (notebook) {
|
||||
var Note = require('note');
|
||||
var Tag = require('tag');
|
||||
Tag.addOrUpdateTag('Leanote');
|
||||
Tag.addOrUpdateTag('Welcome');
|
||||
Note.updateNoteOrContent({
|
||||
IsNew: true,
|
||||
NoteId: Common.objectId(),
|
||||
"NotebookId": notebookId,
|
||||
"Title": "Welcome to Leanote 欢迎来到Leanote",
|
||||
"Content": "<h2>Leanote, Not Just A NotePad!</h2>Welcome!<h2>Leanote, 不只是笔记</h2>欢迎!",
|
||||
"Desc": "Leanote, Not Just A NotePad! Welcome",
|
||||
"Tags": ['Leanote', 'Welcome']
|
||||
}, function () {
|
||||
callback(true);
|
||||
});
|
||||
}
|
||||
else {
|
||||
callback(true);
|
||||
}
|
||||
});
|
||||
callback(true);
|
||||
} else {
|
||||
callback(false);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// log('save new user failed: username exists')
|
||||
// log(err);
|
||||
callback && callback(false, 'User exists');
|
||||
}
|
||||
});
|
||||
},
|
||||
// 不同host的userId可能一样, 潜在的bug
|
||||
saveCurUser: function(user, callback) {
|
||||
// 当前用户是否在数据库中
|
||||
db.users.count({_id: user.UserId}, function(err, count) {
|
||||
if(err || count == 0) {
|
||||
// 添加一个
|
||||
user['_id'] = user.UserId;
|
||||
user['IsActive'] = true;
|
||||
db.users.insert(user, function(err, doc) {
|
||||
log(err);
|
||||
});
|
||||
} else {
|
||||
user.IsActive = true;
|
||||
delete user['Ok'];
|
||||
db.users.update({_id: user.UserId}, {$set: user}, function(err, cnt) {
|
||||
if(err || cnt == 0) {
|
||||
log(err);
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
// console.log(".........");
|
||||
// console.log(user);
|
||||
// 设值其它用户为非active
|
||||
db.users.update({_id: {$ne: user.UserId}}, {$set: {IsActive: false}}, {multi: true}, function(err, n) {
|
||||
// console.log(err);
|
||||
// console.log(n);
|
||||
});
|
||||
},
|
||||
|
||||
// for test
|
||||
getAllUsers: function(callback) {
|
||||
var me = this;
|
||||
db.users.find({}, function(err, users) {
|
||||
callback && callback(users);
|
||||
});
|
||||
},
|
||||
|
||||
// 打开软件时, 从db中获取当前用户
|
||||
init: function(callback) {
|
||||
console.log("......user init.......")
|
||||
var me = this;
|
||||
|
||||
me.getG(function(g) {
|
||||
me.g = g;
|
||||
|
||||
db.users.findOne({IsActive: true}, function(err, user) {
|
||||
if(err || !user || !user.UserId) {
|
||||
console.log('不存在');
|
||||
callback && callback(false);
|
||||
} else {
|
||||
// me.setCurUser(doc);
|
||||
me.token = user.Token;
|
||||
me.userId = user.UserId;
|
||||
me.email = user.Email;
|
||||
me.username = user.Username;
|
||||
me.LastSyncUsn = user.LastSyncUsn;
|
||||
me.LastSyncTime = user.LastSyncTime;
|
||||
me.host = user.Host;
|
||||
me.local = user.IsLocal;
|
||||
Evt.setHost(me.host);
|
||||
|
||||
// 全局配置也在user中, 到web端
|
||||
for(var i in me.g) {
|
||||
user[i] = me.g[i];
|
||||
}
|
||||
|
||||
// 设置当前用户数据路径
|
||||
me.setUserDataPath();
|
||||
|
||||
callback && callback(user);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
},
|
||||
// 得到当前活跃用户Id
|
||||
getCurActiveUserId: function() {
|
||||
return this.userId || "user1";
|
||||
},
|
||||
getToken: function() {
|
||||
return this.token || "user1";
|
||||
},
|
||||
getCurUserImagesPath: function() {
|
||||
return Evt.getBasePath() + '/' + this.getCurUserImagesAppPath();
|
||||
},
|
||||
getCurUserAttachsPath: function() {
|
||||
return Evt.getBasePath() + '/' + this.getCurUserAttachsAppPath();
|
||||
},
|
||||
getCurUserImagesAppPath: function() {
|
||||
return 'data/' + this.getCurActiveUserId() + '/images';
|
||||
},
|
||||
getCurUserAttachsAppPath: function() {
|
||||
return 'data/' + this.getCurActiveUserId() + '/attachs';
|
||||
},
|
||||
|
||||
setUserDataPath: function(userId) {
|
||||
var me = this;
|
||||
// 判断是否存在, 不存在则创建dir
|
||||
try {
|
||||
fs.mkdirSync(Evt.getBasePath() + '/data/');
|
||||
}
|
||||
catch(e) {};
|
||||
try {
|
||||
fs.mkdirSync(Evt.getBasePath() + '/data/' + this.getCurActiveUserId());
|
||||
} catch(e) {
|
||||
}
|
||||
try {
|
||||
fs.mkdirSync(Evt.getBasePath() + '/data/' + this.getCurActiveUserId() + '/images');
|
||||
} catch(e) {
|
||||
}
|
||||
try {
|
||||
fs.mkdirSync(Evt.getBasePath() + '/data/' + this.getCurActiveUserId() + '/attachs');
|
||||
} catch(e) {
|
||||
}
|
||||
},
|
||||
|
||||
getCurUser: function(callback) {
|
||||
var me = this;
|
||||
db.users.findOne({_id: me.getCurActiveUserId()}, function(err, doc) {
|
||||
if(err) {
|
||||
callback(false);
|
||||
} else {
|
||||
callback(doc);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
getLastSyncState: function(callback) {
|
||||
var me = this;
|
||||
me.getCurUser(function(user) {
|
||||
if(user) {
|
||||
callback(user.LastSyncUsn, user.LastSyncTime);
|
||||
} else {
|
||||
callback(false, false);
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 设为-1, 再刷新就会重新同步
|
||||
fullSyncForce: function(callback) {
|
||||
var me = this;
|
||||
db.users.update({UserId: me.getCurActiveUserId()}, {$set: {LastSyncUsn: -1}}, function() {
|
||||
callback && callback();
|
||||
});
|
||||
},
|
||||
|
||||
// 同步后更新同步状态
|
||||
// pull 后调用
|
||||
updateLastSyncState: function(callback) {
|
||||
var me = this;
|
||||
if(!Api) {
|
||||
Api = require('api');
|
||||
}
|
||||
Api.getLastSyncState(function(state) {
|
||||
if(state) {
|
||||
console.error('--updateLastSyncState---')
|
||||
console.log(state);
|
||||
me.LastSyncUsn = state.LastSyncUsn;
|
||||
me.LastSyncTime = state.LastSyncTime;
|
||||
db.users.update({UserId: me.getCurActiveUserId()}, {$set: state});
|
||||
}
|
||||
callback();
|
||||
});
|
||||
},
|
||||
isLocal: function() {
|
||||
var me = this;
|
||||
return me.local;
|
||||
},
|
||||
// send changes要用
|
||||
getLastSyncUsn: function() {
|
||||
var me = this;
|
||||
return me.LastSyncUsn;
|
||||
},
|
||||
// 更新 send changes要用
|
||||
updateLastSyncUsn: function(usn) {
|
||||
var me = this;
|
||||
me.LastSyncUsn = usn;
|
||||
db.users.update({UserId: me.getCurActiveUserId()}, {$set: {LastSyncUsn: usn}});
|
||||
},
|
||||
|
||||
// 全局配置
|
||||
getG: function(callback) {
|
||||
var me = this;
|
||||
db.g.findOne({_id: '1'}, function(err, doc) {
|
||||
if(err || !doc) {
|
||||
callback({});
|
||||
} else {
|
||||
callback(doc);
|
||||
}
|
||||
});
|
||||
},
|
||||
// data = {Theme, NotebookWidth, NoteListWidth, MdEditorWidth, Version};
|
||||
updateG: function(data, callback) {
|
||||
db.g.update({_id: '1'}, {$set: data}, {upsert: true}, function() {
|
||||
callback && callback();
|
||||
});
|
||||
},
|
||||
/**
|
||||
* [saveCurState description]
|
||||
* @param {[type]} state [description]
|
||||
* @return {[type]} [description]
|
||||
User.saveCurState({
|
||||
StarredOpened: StarredOpened,
|
||||
NotebookOpened: NotebookOpened,
|
||||
TagOpened: TagOpened,
|
||||
CurNoteId: CurNoteId,
|
||||
CurIsStarred: CurIsStarred,
|
||||
CurNotebookId: CurNotebookId,
|
||||
CurTag: CurTag
|
||||
}, callback);
|
||||
*/
|
||||
saveCurState: function(state, callback) {
|
||||
var me = this;
|
||||
state = state || {};
|
||||
db.users.update({_id: me.getCurActiveUserId()}, {$set: {State: state}}, function() {
|
||||
callback && callback();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = User;
|
Reference in New Issue
Block a user