文档列表documents添加用户id的限制,添加通过统一认证之后数据库中用户数据的添加和角色的添加,添加Sidebar菜单通过数据库请求获取

This commit is contained in:
2025-07-20 21:49:40 +08:00
parent e4ce41cebe
commit d8f3d98c70
17 changed files with 1630 additions and 199 deletions
+26 -10
View File
@@ -3,7 +3,7 @@ import { useSearchParams, Form } from "@remix-run/react";
import { type MetaFunction, type LoaderFunctionArgs, type ActionFunctionArgs, redirect } from "@remix-run/node";
import { OAuthClient } from "~/api/login/oauth-client";
import { OAUTH_CONFIG } from "~/config/api-config";
import { getUserSession, getSession, createUserSession } from "~/api/login/auth.server";
import { getUserSession, getSession, createUserSessionWithInfo, getUserBySub, addDefaultRole } from "~/api/login/auth.server";
import styles from "~/styles/pages/login.css?url";
export const links = () => [
@@ -44,13 +44,29 @@ export async function action({ request }: ActionFunctionArgs) {
const formData = await request.formData();
const intent = formData.get("intent");
if (intent === "temp_admin_login") {
if (intent === "test_user_login") {
// 获取重定向目标
const session = await getSession(request);
const redirectTo = session.get("redirectTo") || "/";
// 创建管理员会话
return createUserSession(true, 'developer', redirectTo);
// 使用测试用户登录
const testUserSub = "001"; // 测试用户的sub
const userResult = await getUserBySub(testUserSub);
if (userResult.success && userResult.data) {
const user = userResult.data;
// 确保用户有默认角色
if (user.id) {
await addDefaultRole(user.id, 2); // 添加common角色
}
// 创建用户会话,默认角色为common,并保存用户信息
return createUserSessionWithInfo(true, 'common', redirectTo, user);
} else {
// 如果用户不存在,重定向到登录页面并显示错误
return redirect(`/login?error=${encodeURIComponent("测试用户不存在")}`);
}
}
return null;
@@ -149,25 +165,25 @@ export default function Login() {
</div>
</div>
{/* 临时管理员登录区域 */}
{/* 测试用户登录区域 */}
<div className="temp-login-section">
<div className="section-divider">
<span></span>
</div>
<Form method="post" className="temp-login-form">
<input type="hidden" name="intent" value="temp_admin_login" />
<input type="hidden" name="intent" value="test_user_login" />
<button
type="submit"
className="temp-admin-login-button"
>
<i className="ri-admin-line"></i>
<i className="ri-user-line"></i>
</button>
<div className="temp-login-tips">
<p>
<i className="ri-alert-line"></i>
使
<i className="ri-information-line"></i>
使(testuser1)
</p>
</div>
</Form>