11import { Elysia } from "elysia" ;
22import { authPlugin } from "../../authPlugin" ;
3- import { requiresUser } from "$lib/server/auth" ;
3+ import { loginEnabled } from "$lib/server/auth" ;
44import { collections } from "$lib/server/database" ;
55import { authCondition } from "$lib/server/auth" ;
66import { config } from "$lib/server/config" ;
@@ -12,51 +12,16 @@ import { logger } from "$lib/server/logger";
1212export interface FeatureFlags {
1313 enableAssistants : boolean ;
1414 loginEnabled : boolean ;
15- loginRequired : boolean ;
16- guestMode : boolean ;
1715 isAdmin : boolean ;
1816}
1917
2018export const misc = new Elysia ( )
2119 . use ( authPlugin )
2220 . get ( "/public-config" , async ( ) => config . getPublicConfig ( ) )
2321 . get ( "/feature-flags" , async ( { locals } ) => {
24- let loginRequired = false ;
25- const messagesBeforeLogin = config . MESSAGES_BEFORE_LOGIN
26- ? parseInt ( config . MESSAGES_BEFORE_LOGIN )
27- : 0 ;
28- const nConversations = await collections . conversations . countDocuments ( authCondition ( locals ) ) ;
29-
30- if ( requiresUser && ! locals . user ) {
31- if ( messagesBeforeLogin === 0 ) {
32- loginRequired = true ;
33- } else if ( nConversations >= messagesBeforeLogin ) {
34- loginRequired = true ;
35- } else {
36- // get the number of messages where `from === "assistant"` across all conversations.
37- const totalMessages =
38- (
39- await collections . conversations
40- . aggregate ( [
41- { $match : { ...authCondition ( locals ) , "messages.from" : "assistant" } } ,
42- { $project : { messages : 1 } } ,
43- { $limit : messagesBeforeLogin + 1 } ,
44- { $unwind : "$messages" } ,
45- { $match : { "messages.from" : "assistant" } } ,
46- { $count : "messages" } ,
47- ] )
48- . toArray ( )
49- ) [ 0 ] ?. messages ?? 0 ;
50-
51- loginRequired = totalMessages >= messagesBeforeLogin ;
52- }
53- }
54-
5522 return {
5623 enableAssistants : config . ENABLE_ASSISTANTS === "true" ,
57- loginEnabled : requiresUser , // misnomer, this is actually whether the feature is available, not required
58- loginRequired,
59- guestMode : requiresUser && messagesBeforeLogin > 0 ,
24+ loginEnabled, // login feature is on when OID is configured
6025 isAdmin : locals . isAdmin ,
6126 } satisfies FeatureFlags ;
6227 } )
0 commit comments