feat: persian locales + auth fix
This commit is contained in:
parent
cac3d21c6e
commit
759b66469c
@ -5,7 +5,6 @@
|
|||||||
const Promise = require('bluebird')
|
const Promise = require('bluebird')
|
||||||
const express = require('express')
|
const express = require('express')
|
||||||
const router = express.Router()
|
const router = express.Router()
|
||||||
const passport = require('passport')
|
|
||||||
const ExpressBrute = require('express-brute')
|
const ExpressBrute = require('express-brute')
|
||||||
const ExpressBruteRedisStore = require('express-brute-redis')
|
const ExpressBruteRedisStore = require('express-brute-redis')
|
||||||
const moment = require('moment')
|
const moment = require('moment')
|
||||||
@ -45,16 +44,16 @@ router.get('/login', function (req, res, next) {
|
|||||||
router.post('/login', bruteforce.prevent, function (req, res, next) {
|
router.post('/login', bruteforce.prevent, function (req, res, next) {
|
||||||
new Promise((resolve, reject) => {
|
new Promise((resolve, reject) => {
|
||||||
// [1] LOCAL AUTHENTICATION
|
// [1] LOCAL AUTHENTICATION
|
||||||
passport.authenticate('local', function (err, user, info) {
|
wiki.auth.passport.authenticate('local', function (err, user, info) {
|
||||||
if (err) { return reject(err) }
|
if (err) { return reject(err) }
|
||||||
if (!user) { return reject(new Error('INVALID_LOGIN')) }
|
if (!user) { return reject(new Error('INVALID_LOGIN')) }
|
||||||
resolve(user)
|
resolve(user)
|
||||||
})(req, res, next)
|
})(req, res, next)
|
||||||
}).catch({ message: 'INVALID_LOGIN' }, err => {
|
}).catch({ message: 'INVALID_LOGIN' }, err => {
|
||||||
if (appconfig.auth.ldap && appconfig.auth.ldap.enabled) {
|
if (_.has(wiki.config.auth.strategy, 'ldap')) {
|
||||||
// [2] LDAP AUTHENTICATION
|
// [2] LDAP AUTHENTICATION
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
passport.authenticate('ldapauth', function (err, user, info) {
|
wiki.auth.passport.authenticate('ldapauth', function (err, user, info) {
|
||||||
if (err) { return reject(err) }
|
if (err) { return reject(err) }
|
||||||
if (info && info.message) { return reject(new Error(info.message)) }
|
if (info && info.message) { return reject(new Error(info.message)) }
|
||||||
if (!user) { return reject(new Error('INVALID_LOGIN')) }
|
if (!user) { return reject(new Error('INVALID_LOGIN')) }
|
||||||
@ -94,19 +93,19 @@ router.post('/login', bruteforce.prevent, function (req, res, next) {
|
|||||||
* Social Login
|
* Social Login
|
||||||
*/
|
*/
|
||||||
|
|
||||||
router.get('/login/ms', passport.authenticate('windowslive', { scope: ['wl.signin', 'wl.basic', 'wl.emails'] }))
|
router.get('/login/ms', wiki.auth.passport.authenticate('windowslive', { scope: ['wl.signin', 'wl.basic', 'wl.emails'] }))
|
||||||
router.get('/login/google', passport.authenticate('google', { scope: ['profile', 'email'] }))
|
router.get('/login/google', wiki.auth.passport.authenticate('google', { scope: ['profile', 'email'] }))
|
||||||
router.get('/login/facebook', passport.authenticate('facebook', { scope: ['public_profile', 'email'] }))
|
router.get('/login/facebook', wiki.auth.passport.authenticate('facebook', { scope: ['public_profile', 'email'] }))
|
||||||
router.get('/login/github', passport.authenticate('github', { scope: ['user:email'] }))
|
router.get('/login/github', wiki.auth.passport.authenticate('github', { scope: ['user:email'] }))
|
||||||
router.get('/login/slack', passport.authenticate('slack', { scope: ['identity.basic', 'identity.email'] }))
|
router.get('/login/slack', wiki.auth.passport.authenticate('slack', { scope: ['identity.basic', 'identity.email'] }))
|
||||||
router.get('/login/azure', passport.authenticate('azure_ad_oauth2'))
|
router.get('/login/azure', wiki.auth.passport.authenticate('azure_ad_oauth2'))
|
||||||
|
|
||||||
router.get('/login/ms/callback', passport.authenticate('windowslive', { failureRedirect: '/login', successRedirect: '/' }))
|
router.get('/login/ms/callback', wiki.auth.passport.authenticate('windowslive', { failureRedirect: '/login', successRedirect: '/' }))
|
||||||
router.get('/login/google/callback', passport.authenticate('google', { failureRedirect: '/login', successRedirect: '/' }))
|
router.get('/login/google/callback', wiki.auth.passport.authenticate('google', { failureRedirect: '/login', successRedirect: '/' }))
|
||||||
router.get('/login/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login', successRedirect: '/' }))
|
router.get('/login/facebook/callback', wiki.auth.passport.authenticate('facebook', { failureRedirect: '/login', successRedirect: '/' }))
|
||||||
router.get('/login/github/callback', passport.authenticate('github', { failureRedirect: '/login', successRedirect: '/' }))
|
router.get('/login/github/callback', wiki.auth.passport.authenticate('github', { failureRedirect: '/login', successRedirect: '/' }))
|
||||||
router.get('/login/slack/callback', passport.authenticate('slack', { failureRedirect: '/login', successRedirect: '/' }))
|
router.get('/login/slack/callback', wiki.auth.passport.authenticate('slack', { failureRedirect: '/login', successRedirect: '/' }))
|
||||||
router.get('/login/azure/callback', passport.authenticate('azure_ad_oauth2', { failureRedirect: '/login', successRedirect: '/' }))
|
router.get('/login/azure/callback', wiki.auth.passport.authenticate('azure_ad_oauth2', { failureRedirect: '/login', successRedirect: '/' }))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logout
|
* Logout
|
||||||
|
82
server/locales/fa/admin.json
Normal file
82
server/locales/fa/admin.json
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
{
|
||||||
|
"profile": {
|
||||||
|
"displayname": "نام کامل",
|
||||||
|
"displaynameexample": "علی علوی",
|
||||||
|
"email": "ایمیل",
|
||||||
|
"lastprofileupdate": "آخرین زمان به روز رسانی پروفایل",
|
||||||
|
"membersince": "عضو از تاریخ",
|
||||||
|
"password": "گذرواژه",
|
||||||
|
"passwordverify": "تکرار گذرواژه",
|
||||||
|
"provider": "سرویسدهنده",
|
||||||
|
"savechanges": "ذخیره تغییرات",
|
||||||
|
"subtitle": "اطلاعات پروفایل و سیستم احراز هویت",
|
||||||
|
"tfa": "احراز هویت دو مرحلهای",
|
||||||
|
"tfadisable": "غیرفعال کردن سیستم احراز هویت دو مرحلهای",
|
||||||
|
"tfadisabled": "غیرفعال",
|
||||||
|
"tfaenable": "فعال کردن سیستم احراز هویت دو مرحلهای",
|
||||||
|
"tfaenabled": "فعال"
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"subtitle": "آمار کلی وبسایت",
|
||||||
|
"entries": "مدخل",
|
||||||
|
"uploads": "آپلودها",
|
||||||
|
"users": "کاربران"
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"subtitle": "مدیریت تنظیمات وبسایت"
|
||||||
|
},
|
||||||
|
"system": {
|
||||||
|
"subtitle": "ابزارها و اطلاعات برای ویکی شما",
|
||||||
|
"systemversion": "نسخه سیستم",
|
||||||
|
"currentversion": "نسخه فعلی",
|
||||||
|
"latestversion": "آخرین نسخه",
|
||||||
|
"upgrade": "به روز رسانی",
|
||||||
|
"reinstall": "نصب مجدد نسخه فعلی",
|
||||||
|
"versioncheckfailed": "امکان پیدا کردن آخرین نسخه نرم افزار وجود ندارد. لطفا بعدا امتحان کنید.",
|
||||||
|
"administrativetools": "ابزارهای مدیریت",
|
||||||
|
"flushcache": "پاک کردن کش و بازسازی فهرستها",
|
||||||
|
"flushcachetext": "اگر به نظر میرسد محتوای وبسایت به روز نیست یا آخرین تغییرات در آن وجود ندارد، پاک کردن کش احتمالا میتواند به حل این مشکل کمک کند.",
|
||||||
|
"flushcachebtn": "پاک کردن و بازسازی",
|
||||||
|
"resetaccounts": "ریست کردن حسابهای کاربری به حالت پیشفرض",
|
||||||
|
"resetaccountstext": "حسابهای کاربری سیستمی (مثل حساب مهمان) به حالت پیشفرض برخواهند گشت.",
|
||||||
|
"resetaccountsbtn": "ریست کردن حسابهای سیستمی",
|
||||||
|
"flushsessions": "پاک کردن نشست تمام کاربران آنلاین",
|
||||||
|
"flushsessionstext": "نشست تمام کاربرانی که در حال حاضر مشغول استفاده از وبسایت هستند پاک و باید مجددا وارد سیستم شوند.",
|
||||||
|
"flushsessionsbtn": "پاککردن نشستها",
|
||||||
|
"hostinfo": "اطلاعات مربوط به سیستم میزبان",
|
||||||
|
"os": "سیستم عامل",
|
||||||
|
"nodeversion": "نسخه نودجیاس",
|
||||||
|
"hostname": "نام میزبان",
|
||||||
|
"cores": "تعداد هستههای پردازنده",
|
||||||
|
"totalmem": "مجموع حافظه",
|
||||||
|
"cwd": "دایرکتوری کاری"
|
||||||
|
},
|
||||||
|
"theme": {
|
||||||
|
"subtitle": "تغییر ظاهر وبسایت",
|
||||||
|
"primarycolor": "رنگ اصلی",
|
||||||
|
"primarycolordesc": "در نوار جهتیابی بالا، سرساز، پیوندها و غیره استفاده میشود.",
|
||||||
|
"altcolor": "رنگ دوم",
|
||||||
|
"altcolordesc": "در نوارابزار گوشه استفاده میشود (با رنگ کمی تیرهتر)",
|
||||||
|
"footercolor": "رنگ پاورقی",
|
||||||
|
"footercolordesc": "برای پاورقی پایین صفحه استفاده میشود (با رنگ کمی روشنتر)",
|
||||||
|
"codeblock": {
|
||||||
|
"title": "قطعات کد",
|
||||||
|
"dark": "استفاده از تم تیره",
|
||||||
|
"colorize": "رنگآمیزی کد بر اساس سینتکس"
|
||||||
|
},
|
||||||
|
"savechanges": "ذخیره تغییرات",
|
||||||
|
"reset": "برگشت تغییرات به وضعیت پیشفرض"
|
||||||
|
},
|
||||||
|
"users": {
|
||||||
|
"createauthorize": "مدیریت کاربران",
|
||||||
|
"subtitle": "ایجاد یا تغییر دسترسی کاربران به وبسایت",
|
||||||
|
"name": "نام",
|
||||||
|
"email": "آدرس ایمیل",
|
||||||
|
"provider": "سرویسدهنده",
|
||||||
|
"createdon": "ساخته شده در تاریخ",
|
||||||
|
"updatedon": "به روز رسانی شده در تاریخ",
|
||||||
|
"returntousers": "بازگشت به لیست کاربران",
|
||||||
|
"edituser": "ویرایش کاربر",
|
||||||
|
"uniqueid": "شناسه یکتا"
|
||||||
|
}
|
||||||
|
}
|
32
server/locales/fa/auth.json
Normal file
32
server/locales/fa/auth.json
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"loginrequired": "باید وارد سیستم شوید",
|
||||||
|
"loginusing": "وارد شدن به وسیله...",
|
||||||
|
"loginusingalt": "یا وارد شدن به وسیله...",
|
||||||
|
"fields": {
|
||||||
|
"emailuser": "ایمیل/شناسه کاربری",
|
||||||
|
"password": "گذرواژه"
|
||||||
|
},
|
||||||
|
"actions": {
|
||||||
|
"login": "ورود"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"invalidlogin": "شناسه کاربری نادرست",
|
||||||
|
"invalidloginmsg": "آدرس ایمیل یا گذرواژه نادرست است.",
|
||||||
|
"invaliduseremail": "آدرس ایمیل نادرست",
|
||||||
|
"loginerror": "خطا در ورود به سیستم",
|
||||||
|
"notyetauthorized": "هنوز اجازه ورود به وبسایت به شما داده نشده است.",
|
||||||
|
"toomanyattempts": "تلاشهای ناموفق زیاد!",
|
||||||
|
"toomanyattemptsmsg": "شما در مدت زمان کوتاهی تلاشهای ناموفق بسیاری کردهاید. لطفا مجددا بعد از {{time}} امتحان کنید.",
|
||||||
|
"usernotfound": "کاربر پیدا نشد"
|
||||||
|
},
|
||||||
|
"providers": {
|
||||||
|
"local": "محلی",
|
||||||
|
"windowslive": "حساب مایکروسافت",
|
||||||
|
"azure": "حساب اکتیو دایرکتوری اژر مایکروسافت",
|
||||||
|
"google": "حساب گوگل",
|
||||||
|
"facebook": "فیسبوک",
|
||||||
|
"github": "گیتهاب",
|
||||||
|
"slack": "اسلک",
|
||||||
|
"ldap": "الدپ/اکتیو دایرکتوری"
|
||||||
|
}
|
||||||
|
}
|
85
server/locales/fa/browser.json
Normal file
85
server/locales/fa/browser.json
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
{
|
||||||
|
"editor": {
|
||||||
|
"codeblockinsert": "وارد کردن بلوک کد",
|
||||||
|
"codeblocklanguage": "زبان",
|
||||||
|
"codeblockloading": "در حال بارگذاری سینتکس {{name}}",
|
||||||
|
"codeblockloadingerror": "خطا: امکان بارگذاری سینتکس برای این زبان وجود ندارد.",
|
||||||
|
"codeblocksuccess": "بلوک کد شما الحاق شد.",
|
||||||
|
"codeblocktitle": "الحاق بلوک کد",
|
||||||
|
"discard": "دور انداختن",
|
||||||
|
"filedeleteaction": "پاک کردن",
|
||||||
|
"filedeleteloading": "در حال پاک کردن فایل...",
|
||||||
|
"filedeletedefault": "این فایل",
|
||||||
|
"filedeletesuccess": "فایل با موفقیت پاک شد.",
|
||||||
|
"fileerror": "امکان دریافت فهرست به روز رسانی شده وجود ندارد.",
|
||||||
|
"filefolderempty": "این پوشه خالی است.",
|
||||||
|
"fileinsert": "افزودن لینک به فایل",
|
||||||
|
"fileloading": "در حال دریافت فایلها...",
|
||||||
|
"filemoveaction": "انتقال به...",
|
||||||
|
"filemoveerror": "خطا در انتقال: {{err}}",
|
||||||
|
"filemoveloading": "در حال انتقال فایل...",
|
||||||
|
"filemovesuccess": "فایل با موفقیت منتقل شد.",
|
||||||
|
"fileprocessing": "در حال پردازش...",
|
||||||
|
"filerenameaction": "تغییر نام",
|
||||||
|
"filesuccess": "پیوند به فایل الحاق شد.",
|
||||||
|
"filetitle": "الحاق فایل",
|
||||||
|
"fileupload": "بارگذاری فایل",
|
||||||
|
"fileuploaderror": "خطا در بارگذاری: {{err}}",
|
||||||
|
"fileuploadsuccess": "فایلها با موفقیت بارگذاری شدند.",
|
||||||
|
"folders": "پوشهها",
|
||||||
|
"foldersloading": "در حال دریافت لیست پوشهها...",
|
||||||
|
"imagetitle": "الحاق عکس",
|
||||||
|
"imageinsert": "الحاق عکس",
|
||||||
|
"imagesuccess": "عکس الحاق شد.",
|
||||||
|
"imageupload": "بارگذاری عکس",
|
||||||
|
"imagealignleft": "چپ (پیشفرض)",
|
||||||
|
"imagealigncenter": "مرکز",
|
||||||
|
"imagealignright": "راست",
|
||||||
|
"imagealignlogo": "لوگوی صفحه",
|
||||||
|
"newfolder": "پوشه جدید",
|
||||||
|
"videoanymp4file": "هر فایل امپی۴ استاندارد",
|
||||||
|
"videoinsert": "الحاق ویدئو",
|
||||||
|
"videolinktitle": "برای قرار دادن ویدئوی توکار، پیوند ویدئو را وارد کنید:",
|
||||||
|
"videonotsupported": "این یوآرال نادرست است یا پشتیبانی نمیشود.",
|
||||||
|
"videosuccess": "کد ویدئو الحاق شد.",
|
||||||
|
"videosupportedtitle": "موارد زیر پشتیبانی میشوند:",
|
||||||
|
"videotitle": "الحاق ویدئو"
|
||||||
|
},
|
||||||
|
"history": {
|
||||||
|
"pastversions": "نسخههای پیشین",
|
||||||
|
"timestamp": "زمان",
|
||||||
|
"author": "نویسنده",
|
||||||
|
"commit": "کامیت",
|
||||||
|
"comparewith": "مقایسه کن با...",
|
||||||
|
"view": "نمایش",
|
||||||
|
"reverttoversion": "برگرداندن به نسخه",
|
||||||
|
"sidebyside": "نمایش پهلو به پهلو"
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"abort": "قطع کردن",
|
||||||
|
"anchorerror": "کپی از کلیپبرد امکانپذیر نیست. لطفا پیوند را دستی وارد کنید.",
|
||||||
|
"anchorsuccess": "یوآرال در کلیپبرد کپی شد.",
|
||||||
|
"anchortitle": "پیوند به این قسمت را کپی کن",
|
||||||
|
"copyclipboard": "کپی در کلیپبرد",
|
||||||
|
"create": "ایجاد",
|
||||||
|
"createpageinvalid": "مسیر این صفحه نادرست است.",
|
||||||
|
"createpagepath": "مسیر جدید صفحه را وارد کنید:",
|
||||||
|
"createpagetitle": "ایجاد صفحه جدید",
|
||||||
|
"createuser": "ایجاد حساب کاربری",
|
||||||
|
"createuserauthorize": "دسترسی دادن به کاربر",
|
||||||
|
"createuseremail": "آدرس ایمیل:",
|
||||||
|
"createuseremailplaceholder": "مثلا john.doe@company.com",
|
||||||
|
"createusername": "نام کامل:",
|
||||||
|
"createusernameplaceholder": "مثلا علی علوی",
|
||||||
|
"createuserpassword": "گذرواژه:",
|
||||||
|
"createuserprovider": "سرویسدهنده:",
|
||||||
|
"createusertitle": "ساخت حساب کاربری",
|
||||||
|
"delete": "پاک کردن",
|
||||||
|
"deletefiletitle": "پاک شود؟",
|
||||||
|
"deletefilewarn": "آیا مطمئن هستید که میخواهید پاک شود؟",
|
||||||
|
"deleteusertitle": "حساب کاربری پاک شود؟",
|
||||||
|
"deleteuserwarning": "آیا مطمئن هستید که میخواهید حساب کاربری شود؟ این عمل قابل بازگشت نیست.",
|
||||||
|
"discard": "دور انداختن",
|
||||||
|
"discardpagecreate": "آیا مطمئن هستید که میخواهید از این صفحه بروید؟ تمام چیزهایی که تا این لحظه نوشتید از بین میروند."
|
||||||
|
}
|
||||||
|
}
|
@ -33,6 +33,8 @@ module.exports = {
|
|||||||
|
|
||||||
// Load authentication strategies
|
// Load authentication strategies
|
||||||
|
|
||||||
|
wiki.config.auth.strategies.local = {}
|
||||||
|
|
||||||
_.forOwn(wiki.config.auth.strategies, (strategyConfig, strategyKey) => {
|
_.forOwn(wiki.config.auth.strategies, (strategyConfig, strategyKey) => {
|
||||||
strategyConfig.callbackURL = `${wiki.config.site.host}${wiki.config.site.path}/login/${strategyKey}/callback`
|
strategyConfig.callbackURL = `${wiki.config.site.host}${wiki.config.site.path}/login/${strategyKey}/callback`
|
||||||
let strategy = require(`../authentication/${strategyKey}`)
|
let strategy = require(`../authentication/${strategyKey}`)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user