summaryrefslogtreecommitdiff
path: root/public/js/lib
diff options
context:
space:
mode:
authorMax Wu2017-01-21 14:31:41 +0800
committerGitHub2017-01-21 14:31:41 +0800
commit6dfc186691df7b5c63af2ee5eb28cd1e1919050c (patch)
tree58c36e54788224c8ee4ee803a6a3b2c1dbd7b8b2 /public/js/lib
parentfc00fa74341a43b2f99b085aa52fee57f40082ff (diff)
parent0e479111e55354434b5100ae165627f5fabe06b5 (diff)
Merge pull request #326 from hackmdio/es6-integration
ES6 integration
Diffstat (limited to 'public/js/lib')
-rw-r--r--public/js/lib/common/login.js89
-rw-r--r--public/js/lib/config/index.js19
2 files changed, 108 insertions, 0 deletions
diff --git a/public/js/lib/common/login.js b/public/js/lib/common/login.js
new file mode 100644
index 00000000..58fa55c6
--- /dev/null
+++ b/public/js/lib/common/login.js
@@ -0,0 +1,89 @@
+import { serverurl } from '../config';
+
+let checkAuth = false;
+let profile = null;
+let lastLoginState = getLoginState();
+let lastUserId = getUserId();
+var loginStateChangeEvent = null;
+
+export function setloginStateChangeEvent(func) {
+ loginStateChangeEvent = func;
+}
+
+export function resetCheckAuth() {
+ checkAuth = false;
+}
+
+export function setLoginState(bool, id) {
+ Cookies.set('loginstate', bool, {
+ expires: 365
+ });
+ if (id) {
+ Cookies.set('userid', id, {
+ expires: 365
+ });
+ } else {
+ Cookies.remove('userid');
+ }
+ lastLoginState = bool;
+ lastUserId = id;
+ checkLoginStateChanged();
+}
+
+export function checkLoginStateChanged() {
+ if (getLoginState() != lastLoginState || getUserId() != lastUserId) {
+ if (loginStateChangeEvent) setTimeout(loginStateChangeEvent, 100);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+export function getLoginState() {
+ const state = Cookies.get('loginstate');
+ return state === "true" || state === true;
+}
+
+export function getUserId() {
+ return Cookies.get('userid');
+}
+
+export function clearLoginState() {
+ Cookies.remove('loginstate');
+}
+
+export function checkIfAuth(yesCallback, noCallback) {
+ const cookieLoginState = getLoginState();
+ if (checkLoginStateChanged()) checkAuth = false;
+ if (!checkAuth || typeof cookieLoginState == 'undefined') {
+ $.get(`${serverurl}/me`)
+ .done(data => {
+ if (data && data.status == 'ok') {
+ profile = data;
+ yesCallback(profile);
+ setLoginState(true, data.id);
+ } else {
+ noCallback();
+ setLoginState(false);
+ }
+ })
+ .fail(() => {
+ noCallback();
+ })
+ .always(() => {
+ checkAuth = true;
+ });
+ } else if (cookieLoginState) {
+ yesCallback(profile);
+ } else {
+ noCallback();
+ }
+}
+
+export default {
+ checkAuth,
+ profile,
+ lastLoginState,
+ lastUserId,
+ loginStateChangeEvent
+};
diff --git a/public/js/lib/config/index.js b/public/js/lib/config/index.js
new file mode 100644
index 00000000..2b73679f
--- /dev/null
+++ b/public/js/lib/config/index.js
@@ -0,0 +1,19 @@
+import configJson from '../../../../config.json'; // root path json config
+
+const config = 'production' === process.env.NODE_ENV ? configJson.production : configJson.development;
+
+export const GOOGLE_API_KEY = (config.google && config.google.apiKey) || '';
+export const GOOGLE_CLIENT_ID = (config.google && config.google.clientID) || '';
+export const DROPBOX_APP_KEY = (config.dropbox && config.dropbox.appKey) || '';
+
+export const domain = config.domain || ''; // domain name
+export const urlpath = config.urlpath || ''; // sub url path, like: www.example.com/<urlpath>
+export const debug = config.debug || false;
+
+export const port = window.location.port;
+export const serverurl = `${window.location.protocol}//${domain ? domain : window.location.hostname}${port ? ':' + port : ''}${urlpath ? '/' + urlpath : ''}`;
+window.serverurl = serverurl;
+export const noteid = urlpath ? window.location.pathname.slice(urlpath.length + 1, window.location.pathname.length).split('/')[1] : window.location.pathname.split('/')[1];
+export const noteurl = `${serverurl}/${noteid}`;
+
+export const version = '0.5.0';