移除openlist token的输入
This commit is contained in:
@@ -2541,7 +2541,6 @@ const OpenListConfigComponent = ({
|
||||
const { alertModal, showAlert, hideAlert } = useAlertModal();
|
||||
const { isLoading, withLoading } = useLoadingState();
|
||||
const [url, setUrl] = useState('');
|
||||
const [token, setToken] = useState('');
|
||||
const [username, setUsername] = useState('');
|
||||
const [password, setPassword] = useState('');
|
||||
const [rootPath, setRootPath] = useState('/');
|
||||
@@ -2558,7 +2557,6 @@ const OpenListConfigComponent = ({
|
||||
useEffect(() => {
|
||||
if (config?.OpenListConfig) {
|
||||
setUrl(config.OpenListConfig.URL || '');
|
||||
setToken(config.OpenListConfig.Token || '');
|
||||
setUsername(config.OpenListConfig.Username || '');
|
||||
setPassword(config.OpenListConfig.Password || '');
|
||||
setRootPath(config.OpenListConfig.RootPath || '/');
|
||||
@@ -2566,7 +2564,7 @@ const OpenListConfigComponent = ({
|
||||
}, [config]);
|
||||
|
||||
useEffect(() => {
|
||||
if (config?.OpenListConfig?.URL && config?.OpenListConfig?.Token) {
|
||||
if (config?.OpenListConfig?.URL && config?.OpenListConfig?.Username && config?.OpenListConfig?.Password) {
|
||||
fetchVideos();
|
||||
}
|
||||
}, [config]);
|
||||
@@ -2595,7 +2593,6 @@ const OpenListConfigComponent = ({
|
||||
body: JSON.stringify({
|
||||
action: 'save',
|
||||
URL: url,
|
||||
Token: token,
|
||||
Username: username,
|
||||
Password: password,
|
||||
RootPath: rootPath,
|
||||
@@ -2731,26 +2728,10 @@ const OpenListConfigComponent = ({
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label className='block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2'>
|
||||
OpenList Token
|
||||
</label>
|
||||
<input
|
||||
type='password'
|
||||
value={token}
|
||||
onChange={(e) => setToken(e.target.value)}
|
||||
placeholder='your-token'
|
||||
className='w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 focus:border-transparent'
|
||||
/>
|
||||
<p className='mt-1 text-xs text-gray-500 dark:text-gray-400'>
|
||||
可以直接填写Token,或使用下方账号密码登录获取
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className='grid grid-cols-2 gap-4'>
|
||||
<div>
|
||||
<label className='block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2'>
|
||||
账号(可选)
|
||||
账号
|
||||
</label>
|
||||
<input
|
||||
type='text'
|
||||
@@ -2762,7 +2743,7 @@ const OpenListConfigComponent = ({
|
||||
</div>
|
||||
<div>
|
||||
<label className='block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2'>
|
||||
密码(可选)
|
||||
密码
|
||||
</label>
|
||||
<input
|
||||
type='password'
|
||||
@@ -2802,7 +2783,7 @@ const OpenListConfigComponent = ({
|
||||
</div>
|
||||
|
||||
{/* 视频列表区域 */}
|
||||
{config?.OpenListConfig?.URL && config?.OpenListConfig?.Token && (
|
||||
{config?.OpenListConfig?.URL && config?.OpenListConfig?.Username && config?.OpenListConfig?.Password && (
|
||||
<div className='space-y-4'>
|
||||
<div className='flex items-center justify-between'>
|
||||
<div>
|
||||
|
||||
@@ -26,7 +26,7 @@ export async function POST(request: NextRequest) {
|
||||
|
||||
try {
|
||||
const body = await request.json();
|
||||
const { action, URL, Token, Username, Password, RootPath } = body;
|
||||
const { action, URL, Username, Password, RootPath } = body;
|
||||
|
||||
const authInfo = getAuthInfoFromCookie(request);
|
||||
if (!authInfo || !authInfo.username) {
|
||||
@@ -49,40 +49,30 @@ export async function POST(request: NextRequest) {
|
||||
|
||||
if (action === 'save') {
|
||||
// 保存配置
|
||||
if (!URL) {
|
||||
return NextResponse.json({ error: '缺少URL参数' }, { status: 400 });
|
||||
}
|
||||
|
||||
let finalToken = Token;
|
||||
|
||||
// 如果没有Token但有账号密码,尝试登录获取Token
|
||||
if (!finalToken && Username && Password) {
|
||||
try {
|
||||
console.log('[OpenList Config] 使用账号密码登录获取Token');
|
||||
finalToken = await OpenListClient.login(URL, Username, Password);
|
||||
console.log('[OpenList Config] 登录成功,获取到Token');
|
||||
} catch (error) {
|
||||
console.error('[OpenList Config] 登录失败:', error);
|
||||
return NextResponse.json(
|
||||
{ error: '使用账号密码登录失败: ' + (error as Error).message },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 检查是否有Token
|
||||
if (!finalToken) {
|
||||
if (!URL || !Username || !Password) {
|
||||
return NextResponse.json(
|
||||
{ error: '请提供Token或账号密码' },
|
||||
{ error: '请提供 URL、账号和密码' },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
// 验证账号密码是否正确
|
||||
try {
|
||||
console.log('[OpenList Config] 验证账号密码');
|
||||
await OpenListClient.login(URL, Username, Password);
|
||||
console.log('[OpenList Config] 账号密码验证成功');
|
||||
} catch (error) {
|
||||
console.error('[OpenList Config] 账号密码验证失败:', error);
|
||||
return NextResponse.json(
|
||||
{ error: '账号密码验证失败: ' + (error as Error).message },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
|
||||
adminConfig.OpenListConfig = {
|
||||
URL,
|
||||
Token: finalToken,
|
||||
Username: Username || undefined,
|
||||
Password: Password || undefined,
|
||||
Username,
|
||||
Password,
|
||||
RootPath: RootPath || '/',
|
||||
LastRefreshTime: adminConfig.OpenListConfig?.LastRefreshTime,
|
||||
ResourceCount: adminConfig.OpenListConfig?.ResourceCount,
|
||||
|
||||
@@ -264,7 +264,7 @@ async function handleOpenListProxy(request: NextRequest) {
|
||||
const config = await getConfig();
|
||||
const openListConfig = config.OpenListConfig;
|
||||
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Token) {
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Username || !openListConfig.Password) {
|
||||
return NextResponse.json(
|
||||
{ code: 0, msg: 'OpenList 未配置', list: [] },
|
||||
{ status: 200 }
|
||||
@@ -272,7 +272,11 @@ async function handleOpenListProxy(request: NextRequest) {
|
||||
}
|
||||
|
||||
const rootPath = openListConfig.RootPath || '/';
|
||||
const client = new OpenListClient(openListConfig.URL, openListConfig.Token);
|
||||
const client = new OpenListClient(
|
||||
openListConfig.URL,
|
||||
openListConfig.Username,
|
||||
openListConfig.Password
|
||||
);
|
||||
|
||||
// 读取 metainfo (从数据库或缓存)
|
||||
let metaInfo: MetaInfo | null = getCachedMetaInfo(rootPath);
|
||||
|
||||
@@ -26,7 +26,7 @@ export async function GET(request: NextRequest) {
|
||||
const config = await getConfig();
|
||||
const openListConfig = config.OpenListConfig;
|
||||
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Token) {
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Username || !openListConfig.Password) {
|
||||
throw new Error('OpenList 未配置');
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ export async function POST(request: NextRequest) {
|
||||
const config = await getConfig();
|
||||
const openListConfig = config.OpenListConfig;
|
||||
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Token) {
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Username || !openListConfig.Password) {
|
||||
return NextResponse.json(
|
||||
{ error: 'OpenList 未配置' },
|
||||
{ status: 400 }
|
||||
@@ -49,7 +49,6 @@ export async function POST(request: NextRequest) {
|
||||
const rootPath = openListConfig.RootPath || '/';
|
||||
const client = new OpenListClient(
|
||||
openListConfig.URL,
|
||||
openListConfig.Token,
|
||||
openListConfig.Username,
|
||||
openListConfig.Password
|
||||
);
|
||||
|
||||
@@ -35,7 +35,7 @@ export async function GET(request: NextRequest) {
|
||||
const config = await getConfig();
|
||||
const openListConfig = config.OpenListConfig;
|
||||
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Token) {
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Username || !openListConfig.Password) {
|
||||
return NextResponse.json({ error: 'OpenList 未配置' }, { status: 400 });
|
||||
}
|
||||
|
||||
@@ -43,7 +43,6 @@ export async function GET(request: NextRequest) {
|
||||
const folderPath = `${rootPath}${rootPath.endsWith('/') ? '' : '/'}${folderName}`;
|
||||
const client = new OpenListClient(
|
||||
openListConfig.URL,
|
||||
openListConfig.Token,
|
||||
openListConfig.Username,
|
||||
openListConfig.Password
|
||||
);
|
||||
|
||||
@@ -34,7 +34,7 @@ export async function GET(request: NextRequest) {
|
||||
const config = await getConfig();
|
||||
const openListConfig = config.OpenListConfig;
|
||||
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Token) {
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Username || !openListConfig.Password) {
|
||||
return NextResponse.json(
|
||||
{ error: 'OpenList 未配置', list: [], total: 0 },
|
||||
{ status: 200 }
|
||||
@@ -44,7 +44,6 @@ export async function GET(request: NextRequest) {
|
||||
const rootPath = openListConfig.RootPath || '/';
|
||||
const client = new OpenListClient(
|
||||
openListConfig.URL,
|
||||
openListConfig.Token,
|
||||
openListConfig.Username,
|
||||
openListConfig.Password
|
||||
);
|
||||
|
||||
@@ -31,7 +31,7 @@ export async function GET(request: NextRequest) {
|
||||
const config = await getConfig();
|
||||
const openListConfig = config.OpenListConfig;
|
||||
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Token) {
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Username || !openListConfig.Password) {
|
||||
return NextResponse.json({ error: 'OpenList 未配置' }, { status: 400 });
|
||||
}
|
||||
|
||||
@@ -41,7 +41,6 @@ export async function GET(request: NextRequest) {
|
||||
|
||||
const client = new OpenListClient(
|
||||
openListConfig.URL,
|
||||
openListConfig.Token,
|
||||
openListConfig.Username,
|
||||
openListConfig.Password
|
||||
);
|
||||
|
||||
@@ -30,7 +30,7 @@ export async function POST(request: NextRequest) {
|
||||
const config = await getConfig();
|
||||
const openListConfig = config.OpenListConfig;
|
||||
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Token) {
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Username || !openListConfig.Password) {
|
||||
return NextResponse.json({ error: 'OpenList 未配置' }, { status: 400 });
|
||||
}
|
||||
|
||||
@@ -38,7 +38,6 @@ export async function POST(request: NextRequest) {
|
||||
const folderPath = `${rootPath}${rootPath.endsWith('/') ? '' : '/'}${folder}`;
|
||||
const client = new OpenListClient(
|
||||
openListConfig.URL,
|
||||
openListConfig.Token,
|
||||
openListConfig.Username,
|
||||
openListConfig.Password
|
||||
);
|
||||
|
||||
@@ -39,7 +39,7 @@ export async function POST(request: NextRequest) {
|
||||
const config = await getConfig();
|
||||
const openListConfig = config.OpenListConfig;
|
||||
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Token) {
|
||||
if (!openListConfig || !openListConfig.URL || !openListConfig.Username || !openListConfig.Password) {
|
||||
return NextResponse.json(
|
||||
{ error: 'OpenList 未配置' },
|
||||
{ status: 400 }
|
||||
@@ -66,7 +66,6 @@ export async function POST(request: NextRequest) {
|
||||
performScan(
|
||||
taskId,
|
||||
openListConfig.URL,
|
||||
openListConfig.Token,
|
||||
openListConfig.RootPath || '/',
|
||||
tmdbApiKey,
|
||||
tmdbProxy,
|
||||
@@ -97,20 +96,18 @@ export async function POST(request: NextRequest) {
|
||||
async function performScan(
|
||||
taskId: string,
|
||||
url: string,
|
||||
token: string,
|
||||
rootPath: string,
|
||||
tmdbApiKey: string,
|
||||
tmdbProxy?: string,
|
||||
username?: string,
|
||||
password?: string
|
||||
): Promise<void> {
|
||||
const client = new OpenListClient(url, token, username, password);
|
||||
const client = new OpenListClient(url, username!, password!);
|
||||
|
||||
console.log('[OpenList Refresh] 开始扫描:', {
|
||||
taskId,
|
||||
rootPath,
|
||||
url,
|
||||
hasToken: !!token,
|
||||
});
|
||||
|
||||
// 立即更新进度,确保任务可被查询
|
||||
|
||||
@@ -34,7 +34,7 @@ export async function GET(request: NextRequest) {
|
||||
const apiSites = await getAvailableApiSites(authInfo.username);
|
||||
|
||||
// 检查是否配置了 OpenList
|
||||
const hasOpenList = !!(config.OpenListConfig?.URL && config.OpenListConfig?.Token);
|
||||
const hasOpenList = !!(config.OpenListConfig?.URL && config.OpenListConfig?.Username && config.OpenListConfig?.Password);
|
||||
|
||||
// 共享状态
|
||||
let streamClosed = false;
|
||||
|
||||
@@ -90,7 +90,9 @@ export default async function RootLayout({
|
||||
tmdbApiKey = config.SiteConfig.TMDBApiKey || '';
|
||||
// 检查是否配置了 OpenList
|
||||
openListEnabled = !!(
|
||||
config.OpenListConfig?.URL && config.OpenListConfig?.Token
|
||||
config.OpenListConfig?.URL &&
|
||||
config.OpenListConfig?.Username &&
|
||||
config.OpenListConfig?.Password
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user