Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wiki-js
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
wiki-js
Commits
759b6646
Commit
759b6646
authored
Sep 11, 2017
by
NGPixel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: persian locales + auth fix
parent
cac3d21c
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
216 additions
and
16 deletions
+216
-16
auth.js
server/controllers/auth.js
+15
-16
admin.json
server/locales/fa/admin.json
+82
-0
auth.json
server/locales/fa/auth.json
+32
-0
browser.json
server/locales/fa/browser.json
+85
-0
auth.js
server/modules/auth.js
+2
-0
No files found.
server/controllers/auth.js
View file @
759b6646
...
...
@@ -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
...
...
server/locales/fa/admin.json
0 → 100644
View file @
759b6646
{
"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"
:
"شناسه یکتا"
}
}
server/locales/fa/auth.json
0 → 100644
View file @
759b6646
{
"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"
:
"الدپ/اکتیو دایرکتوری"
}
}
server/locales/fa/browser.json
0 → 100644
View file @
759b6646
{
"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"
:
"آیا مطمئن هستید که میخواهید از این صفحه بروید؟ تمام چیزهایی که تا این لحظه نوشتید از بین میروند."
}
}
server/modules/auth.js
View file @
759b6646
...
...
@@ -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
}
`
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment