feat: persian locales + auth fix
This commit is contained in:
parent
cac3d21c6e
commit
759b66469c
@ -5,7 +5,6 @@
|
||||
const Promise = require('bluebird')
|
||||
const express = require('express')
|
||||
const router = express.Router()
|
||||
const passport = require('passport')
|
||||
const ExpressBrute = require('express-brute')
|
||||
const ExpressBruteRedisStore = require('express-brute-redis')
|
||||
const moment = require('moment')
|
||||
@ -45,16 +44,16 @@ router.get('/login', function (req, res, next) {
|
||||
router.post('/login', bruteforce.prevent, function (req, res, next) {
|
||||
new Promise((resolve, reject) => {
|
||||
// [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 (!user) { return reject(new Error('INVALID_LOGIN')) }
|
||||
resolve(user)
|
||||
})(req, res, next)
|
||||
}).catch({ message: 'INVALID_LOGIN' }, err => {
|
||||
if (appconfig.auth.ldap && appconfig.auth.ldap.enabled) {
|
||||
if (_.has(wiki.config.auth.strategy, 'ldap')) {
|
||||
// [2] LDAP AUTHENTICATION
|
||||
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 (info && info.message) { return reject(new Error(info.message)) }
|
||||
if (!user) { return reject(new Error('INVALID_LOGIN')) }
|
||||
@ -94,19 +93,19 @@ router.post('/login', bruteforce.prevent, function (req, res, next) {
|
||||
* Social Login
|
||||
*/
|
||||
|
||||
router.get('/login/ms', passport.authenticate('windowslive', { scope: ['wl.signin', 'wl.basic', 'wl.emails'] }))
|
||||
router.get('/login/google', passport.authenticate('google', { scope: ['profile', 'email'] }))
|
||||
router.get('/login/facebook', passport.authenticate('facebook', { scope: ['public_profile', 'email'] }))
|
||||
router.get('/login/github', passport.authenticate('github', { scope: ['user:email'] }))
|
||||
router.get('/login/slack', passport.authenticate('slack', { scope: ['identity.basic', 'identity.email'] }))
|
||||
router.get('/login/azure', passport.authenticate('azure_ad_oauth2'))
|
||||
router.get('/login/ms', wiki.auth.passport.authenticate('windowslive', { scope: ['wl.signin', 'wl.basic', 'wl.emails'] }))
|
||||
router.get('/login/google', wiki.auth.passport.authenticate('google', { scope: ['profile', 'email'] }))
|
||||
router.get('/login/facebook', wiki.auth.passport.authenticate('facebook', { scope: ['public_profile', 'email'] }))
|
||||
router.get('/login/github', wiki.auth.passport.authenticate('github', { scope: ['user:email'] }))
|
||||
router.get('/login/slack', wiki.auth.passport.authenticate('slack', { scope: ['identity.basic', 'identity.email'] }))
|
||||
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/google/callback', passport.authenticate('google', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
router.get('/login/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
router.get('/login/github/callback', passport.authenticate('github', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
router.get('/login/slack/callback', passport.authenticate('slack', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
router.get('/login/azure/callback', passport.authenticate('azure_ad_oauth2', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
router.get('/login/ms/callback', wiki.auth.passport.authenticate('windowslive', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
router.get('/login/google/callback', wiki.auth.passport.authenticate('google', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
router.get('/login/facebook/callback', wiki.auth.passport.authenticate('facebook', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
router.get('/login/github/callback', wiki.auth.passport.authenticate('github', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
router.get('/login/slack/callback', wiki.auth.passport.authenticate('slack', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
router.get('/login/azure/callback', wiki.auth.passport.authenticate('azure_ad_oauth2', { failureRedirect: '/login', successRedirect: '/' }))
|
||||
|
||||
/**
|
||||
* 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
|
||||
|
||||
wiki.config.auth.strategies.local = {}
|
||||
|
||||
_.forOwn(wiki.config.auth.strategies, (strategyConfig, strategyKey) => {
|
||||
strategyConfig.callbackURL = `${wiki.config.site.host}${wiki.config.site.path}/login/${strategyKey}/callback`
|
||||
let strategy = require(`../authentication/${strategyKey}`)
|
||||
|
Loading…
Reference in New Issue
Block a user