أضف NodesSSO إلى تبعيات الحزمة (في ملف Package.swift الخاص بك):
dependencies: [
... ,
. package ( url : " https://github.com/nodes-vapor/nodes-sso.git " , from : " 1.0.0 " )
]وكذلك لهدفك (على سبيل المثال "التطبيق"):
targets: [
...
. target (
name : " App " ,
dependencies : [ ... " NodesSSO " ... ]
) ,
...
] انسخ مجلدات NodesSSO من Resources/Views و Public من هذا الريبو والصقها في مشروعك في نفس الدلائل. يمكنك تنزيل هذا الريبو كملف مضغوط ثم نقل الملفات إلى الأدلة المذكورة.
تأكد أولاً من قيامك باستيراد NodesSSO في كل مكان تحتاج إليه:
import NodesSSO public func configure ( _ config : inout Config , _ env : inout Environment , _ services : inout Services ) throws {
try services . register ( NodesSSOProvider < MyNodesSSOAuthenticatableUser > ( config : NodesSSOConfig (
projectURL : " https://myproject.com " ,
redirectURL : " https://url-for-sso.com " ,
salt : " MY-SECRET-HASH-FOR-SSO " ,
environment : env
) ) )
} هناك أيضًا معلمات لتعيين المسارات التي يجب أن تقوم بتمكين الدخول الموحّد (SSO) في مشروعك. قم بإلقاء نظرة على توقيع NodesSSOConfig لمزيد من المعلومات.
تأكد من إضافة مسارات الدخول الموحّد (SSO) ذات الصلة بالعقد، على سبيل المثال في configure.swift أو routes.swift :
services . register ( Router . self ) { container -> EngineRouter in
let router = EngineRouter . default ( )
try router . useNodesSSORoutes ( MyNodesSSOAuthenticatableUser . self , on : container )
return router
}لتتمكن من تضمين زر الدخول الموحّد (SSO)، ستحتاج إلى إضافة علامة NodesSSO Leaf:
public func configure ( _ config : inout Config , _ env : inout Environment , _ services : inout Services ) throws {
services . register { _ -> LeafTagConfig in
var tags = LeafTagConfig . default ( )
tags . useNodesSSOLeafTags ( )
return tags
}
} في الصفحة التي تريد أن يظهر فيها زر NodesSSO، قم بتضمين الملف الطرفي sso-button :
#embed("NodesSSO/sso-button")
NodesSSOAuthenticatable يعد NodesSSOProvider عامًا ويتطلب نوعًا يتوافق مع NodesSSOAuthenticatable . يحتوي هذا البروتوكول على طريقة واحدة يتم استدعاؤها عند انتهاء تسجيل الدخول الموحد (SSO) بنجاح:
public static func authenticated ( _ user : AuthenticatedUser , req : Request ) -> Future < Response > بالنظر إلى AuthenticatedUser يمكن للمنفذ بعد ذلك البحث عن email وإنشاء المستخدم إذا لم يكن موجودًا، أو إذا كان موجودًا، قم بتسجيل دخول المستخدم تلقائيًا.
تم تطوير هذه الحزمة وصيانتها بواسطة فريق Vapor في Nodes.
هذه الحزمة عبارة عن برنامج مفتوح المصدر مرخص بموجب ترخيص MIT