أضف 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