2024-09-22 23:32:49 +08:00
2025-02-23 05:18:32 +08:00

Discourse Connect

这是一个基于Next.js, 实现了使用 Discourse SSO (Single Sign-On) 用户系统的 OAuth 认证功能。

前端UI使用shadcn/ui.

shadcn安装组件的命令,举例: npx shadcn@latest add button

本项目是一个中间项目, 用于允许用户通过oauth2.0认证的方式接入本项目, 但是实际用户信息是本项目通过SSO连接到Discourse论坛获取的.

原始项目地址: https://github.com/Tuluobo/discourse-connect

本项目主要是进行了:

  1. 前端页面内容补充
  2. 管理员的相关管理页面和统计页面
  3. 本系统用户可以查看自己应用的统计信息
  4. Navbar的导航菜单添加
  5. 本系统用户可以限制自己应用的允许授权使用者
  6. 首页说明的优化

整体流程应该是这样的:

用户登录接入应用 - 接入应用通过oauth2.0向本系统发起授权请求 - 本系统向Discourse论坛发起SSO请求 - 用户在Discourse论坛中进行登录 - Discourse论坛重定向到本系统, 并附带sso和sig参数 - 本系统通过sso和sig参数向Discourse论坛发起获取用户信息请求 - 本系统通过oauth2.0向接入应用发起回调请求, 并附带用户信息 - 接入应用通过oauth2.0向本系统发起获取用户信息请求 - 本系统通过oauth2.0向Discourse论坛发起获取用户信息请求 - 本系统返回用户信息给接入应用

项目概述

本项目提供了一个 OAuth 认证系统,允许其他应用程序使用 Discourse 论坛的用户账号进行身份验证。这样可以让用户使用他们已有的 Discourse 账号登录到您的应用程序,无需创建新的账号。

目前Discourse论坛是Q58论坛. Q58论坛网址: https://q58.club 本项目部署网址: https://connect.q58.club

主要特性:

  • 基于 Discourse SSO 的用户认证
  • OAuth 2.0 协议支持
  • 使用 Next.js 框架构建,提供良好的性能和开发体验

本项目部署在vercel, 数据库使用Neon.

基础功能的检查

  1. 直接登录本系统
  2. 未登录本系统, 未登录q58论坛, 检查: 用户在接入应用中登录, 然后登录本系统, 然后登录q58论坛, 正常一直回调到用户应用
  3. 未登录本系统, 登录了q58论坛, 检查: 用户在接入应用中登录, 然后登录本系统, 正常回调到用户应用

管理员功能检查

  1. 管理员登录本系统
  2. 管理员在应用管理页面, 检查应用列表, 可以查看应用列表, 可以编辑应用, 可以删除应用
  3. 管理员在用户管理页面, 可以查看用户列表, 可以编辑用户, 可以删除用户
  4. 管理员在日志管理页面, 可以查看日志列表

应用控制功能检查

  1. 启用/禁用 应用的功能有效检查
  2. 限制授权用户 的功能有效检查
    1. 限制为空时,是否所有用户都能登录
    2. 新增允许用户, 是否能正常登录
    3. 删除允许用户, 是否能正常限制
    4. 当用户从可用变不可用, 或者不可用变可用时, 是否正确进行限制

用户应用接入本系统oauth2.0认证的方式:

写在"src\app()\page.tsx"里了.

添加新功能的准则

  1. 尽量简单, 尽量少修改代码
  2. 不能影响已有的功能
  3. 尽量不新增文件
  4. 尽量使用已有的组件和函数
  5. 前端页面要尽量使用shadcn的组件

许可证

本项目采用 MIT 许可证。详情请见 LICENSE 文件。

Description
一个基于 Discourse SSO (Single Sign-On) 用户系统的身份认证 OAuth Connect 系统。
Readme MIT 641 KiB
Languages
TypeScript 97.6%
CSS 1%
Dockerfile 0.7%
JavaScript 0.7%