diff --git a/src/helpers/ApiClient.js b/src/helpers/ApiClient.js
index dacf36671..0462f9461 100644
--- a/src/helpers/ApiClient.js
+++ b/src/helpers/ApiClient.js
@@ -38,8 +38,9 @@ export default class {
}));
}
- if (cookie.load('accessToken')) {
- request.set('Authorization', `Bearer ${cookie.load('accessToken')}`);
+ if (cookie.load('auth')) {
+ const headers = cookie.load('auth');
+ Object.keys(headers).forEach(key => request.set(key, headers[key]));
}
if (__SERVER__ && req.get('cookie')) {
@@ -50,11 +51,21 @@ export default class {
request.send(decamelizeKeys(data));
}
- request.end((err, { body } = {}) => {
+ request.end((err, { header, body } = {}) => {
if (err) {
return reject(body || err);
}
+ if (header['access-token']) {
+ cookie.save('auth', {
+ 'access-token': header['access-token'],
+ client: header.client,
+ expiry: header.expiry,
+ uid: header.uid,
+ 'token-type': 'Bearer'
+ });
+ }
+
return resolve(body);
});
});
diff --git a/src/locale/ar.js b/src/locale/ar.js
index f011cc935..069f26a42 100644
--- a/src/locale/ar.js
+++ b/src/locale/ar.js
@@ -68,6 +68,8 @@ export default {
'nav.aboutQuranProject': 'Quran.com المعروف أيضا باسم القرآن الكريم، قناة القرآن الكريم، القرآن الكريم، القرآن الكريم) هو مشروع خيري)', // eslint-disable-line max-len
'nav.mobile': 'التليفون المحمول',
'nav.navigate': 'انتقل',
- 'nav.legacySite': 'الموقع القديم'
+ 'nav.legacySite': 'الموقع القديم',
+
+ 'login.message': 'تسجيل الدخول إلى Quran.com لتخزين كل ما تبذلونه من العناوين والملاحظات والأنشطة.'
}
};
diff --git a/src/locale/en.js b/src/locale/en.js
index e0430c9cb..b00905a3c 100644
--- a/src/locale/en.js
+++ b/src/locale/en.js
@@ -61,13 +61,15 @@ export default {
'nav.contribute': 'Contribute',
'nav.aboutUs': 'About us',
- 'nav.developers': 'developers',
+ 'nav.developers': 'Developers',
'nav.usefulSites': 'Useful sites',
'nav.otherLinks': 'Other links',
'nav.contactUs': 'Contact us',
'nav.aboutQuranProject': 'Quran.com (also known as The Noble Quran, Al Quran, Holy Quran, Koran) is a pro bono project.', // eslint-disable-line max-len
'nav.mobile': 'Mobile',
'nav.navigate': 'Navigate',
- 'nav.legacySite': 'Legacy Quran.com'
+ 'nav.legacySite': 'Legacy Quran.com',
+
+ 'login.message': 'Sign in to Quran.com to store all your bookmarks, notes and activities.'
}
};
diff --git a/src/locale/ur.js b/src/locale/ur.js
index 914447601..8b76a3f4e 100644
--- a/src/locale/ur.js
+++ b/src/locale/ur.js
@@ -68,6 +68,8 @@ export default {
'nav.aboutQuranProject': 'قرآن کریم ایک فلاں عامہ (عوامی بہبود کے لئے) منصوبہ ہے',
'nav.mobile': 'موبائل',
'nav.navigate': 'تشریف لے جائیں',
- 'nav.legacySite': 'پرانی سائٹ'
+ 'nav.legacySite': 'پرانی سائٹ',
+
+ 'login.message': 'Quran.com کرنے کیلئے سائن ان سب کو اپنے بک مارکس، نوٹوں اور سرگرمیوں کو ذخیرہ کرنے.'
}
};
diff --git a/src/redux/actions/auth.js b/src/redux/actions/auth.js
index 28e9bd834..732795bed 100644
--- a/src/redux/actions/auth.js
+++ b/src/redux/actions/auth.js
@@ -5,6 +5,7 @@ import {
FACEBOOK_SUCCESS,
FACEBOOK_FAILURE,
LOGOUT_SUCCESS,
+ SAVE,
LOAD,
LOAD_SUCCESS,
LOAD_FAILURE
@@ -17,17 +18,21 @@ export function isLoaded(globalState) {
export function load() {
return {
types: [LOAD, LOAD_SUCCESS, LOAD_FAILURE],
- promise: client => client.get('/onequran/api/v1/auth/current')
+ promise: client => client.get('/onequran/auth/validate_token')
};
}
export function facebook() {
return {
types: [FACEBOOK, FACEBOOK_SUCCESS, FACEBOOK_FAILURE],
- promise: client => client.get('/onequran/auth/facebook/callback')
};
}
+export const save = data => ({
+ type: SAVE,
+ data
+});
+
export function logout() {
return {
type: LOGOUT_SUCCESS
diff --git a/src/redux/actions/bookmarks.js b/src/redux/actions/bookmarks.js
index 536ce5ad3..6f8bf7a5f 100644
--- a/src/redux/actions/bookmarks.js
+++ b/src/redux/actions/bookmarks.js
@@ -19,14 +19,14 @@ export function load() {
return {
types: [LOAD, LOAD_SUCCESS, LOAD_FAILURE],
schema: [bookmarksSchema],
- promise: client => client.get('/onequran/api/v1/bookmarks')
+ promise: client => client.get('/onequran/api/v1/bookmarks.json')
};
}
export function addBookmark(ayahKey) {
return {
types: [ADD_BOOKMARK, ADD_BOOKMARK_SUCCESS, ADD_BOOKMARK_FAILURE],
- promise: client => client.post('/onequran/api/v1/bookmarks', {
+ promise: client => client.post('/onequran/api/v1/bookmarks.json', {
data: {
bookmark: { ayahKey }
}
@@ -38,7 +38,7 @@ export function addBookmark(ayahKey) {
export function removeBookmark(ayahKey) {
return {
types: [REMOVE_BOOKMARK, REMOVE_BOOKMARK_SUCCESS, REMOVE_BOOKMARK_FAILURE],
- promise: client => client.del(`/onequran/api/v1/bookmarks/${ayahKey}`),
+ promise: client => client.del(`/onequran/api/v1/bookmarks/${ayahKey}.json`),
ayahKey
};
}
diff --git a/src/redux/constants/auth.js b/src/redux/constants/auth.js
index 1e6f3eb9a..57bba262f 100644
--- a/src/redux/constants/auth.js
+++ b/src/redux/constants/auth.js
@@ -2,6 +2,7 @@ export const FACEBOOK = '@@quran/auth/FACEBOOK';
export const FACEBOOK_SUCCESS = '@@quran/auth/FACEBOOK_SUCCESS';
export const FACEBOOK_FAILURE = '@@quran/auth/FACEBOOK_FAILURE';
export const LOGOUT_SUCCESS = '@@quran/auth/LOGOUT_SUCCESS';
+export const SAVE = '@@quran/auth/SAVE';
export const LOAD = '@@quran/auth/LOAD';
export const LOAD_SUCCESS = '@@quran/auth/LOAD_SUCCESS';
export const LOAD_FAILURE = '@@quran/auth/LOAD_FAILURE';
diff --git a/src/redux/modules/auth.js b/src/redux/modules/auth.js
index ab786e860..9cdfe23e1 100644
--- a/src/redux/modules/auth.js
+++ b/src/redux/modules/auth.js
@@ -5,7 +5,8 @@ import {
FACEBOOK_FAILURE,
LOGOUT_SUCCESS,
LOAD_SUCCESS,
- LOAD_FAILURE
+ LOAD_FAILURE,
+ SAVE
} from 'redux/constants/auth';
const initialState = {
@@ -14,6 +15,22 @@ const initialState = {
export default function reducer(state = initialState, action = {}) {
switch (action.type) {
+ case SAVE: {
+ cookie.save('auth', {
+ client: action.data.client_id,
+ expiry: action.data.expiry,
+ uid: action.data.uid,
+ 'access-token': action.data.auth_token,
+ 'token-type': 'Bearer'
+ });
+
+ return {
+ ...state,
+ loading: false,
+ loaded: true,
+ user: action.data
+ };
+ }
case LOAD_SUCCESS:
return {
...state,
diff --git a/src/styles/main.scss b/src/styles/main.scss
index fe32fe638..159913400 100644
--- a/src/styles/main.scss
+++ b/src/styles/main.scss
@@ -28,6 +28,10 @@ html,body{
}
}
+.min-container{
+ min-height: 80vh;
+}
+
.highlight {
background-color: #F5FBF7;
}