mirror of
				https://github.com/open-webui/open-webui
				synced 2025-06-26 18:26:48 +00:00 
			
		
		
		
	feat: set first user to admin by default
This commit is contained in:
		
							parent
							
								
									07d2c9871f
								
							
						
					
					
						commit
						83ff1d77ea
					
				@ -9,7 +9,7 @@ import json
 | 
			
		||||
from apps.web.models.users import Users
 | 
			
		||||
from constants import ERROR_MESSAGES
 | 
			
		||||
from utils.utils import extract_token_from_auth_header
 | 
			
		||||
from config import OLLAMA_API_BASE_URL, OLLAMA_WEBUI_AUTH
 | 
			
		||||
from config import OLLAMA_API_BASE_URL, WEBUI_AUTH
 | 
			
		||||
 | 
			
		||||
app = Flask(__name__)
 | 
			
		||||
CORS(
 | 
			
		||||
@ -32,7 +32,7 @@ def proxy(path):
 | 
			
		||||
    headers = dict(request.headers)
 | 
			
		||||
 | 
			
		||||
    # Basic RBAC support
 | 
			
		||||
    if OLLAMA_WEBUI_AUTH:
 | 
			
		||||
    if WEBUI_AUTH:
 | 
			
		||||
        if "Authorization" in headers:
 | 
			
		||||
            token = extract_token_from_auth_header(headers["Authorization"])
 | 
			
		||||
            user = Users.get_user_by_token(token)
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@ from fastapi import FastAPI, Request, Depends, HTTPException
 | 
			
		||||
from fastapi.middleware.cors import CORSMiddleware
 | 
			
		||||
 | 
			
		||||
from apps.web.routers import auths, users
 | 
			
		||||
from config import OLLAMA_WEBUI_VERSION, OLLAMA_WEBUI_AUTH
 | 
			
		||||
from config import WEBUI_VERSION, WEBUI_AUTH
 | 
			
		||||
 | 
			
		||||
app = FastAPI()
 | 
			
		||||
 | 
			
		||||
@ -23,4 +23,4 @@ app.include_router(users.router, prefix="/users", tags=["users"])
 | 
			
		||||
 | 
			
		||||
@app.get("/")
 | 
			
		||||
async def get_status():
 | 
			
		||||
    return {"status": True, "version": OLLAMA_WEBUI_VERSION, "auth": OLLAMA_WEBUI_AUTH}
 | 
			
		||||
    return {"status": True, "version": WEBUI_VERSION, "auth": WEBUI_AUTH}
 | 
			
		||||
 | 
			
		||||
@ -81,6 +81,9 @@ class UsersTable:
 | 
			
		||||
            )
 | 
			
		||||
        ]
 | 
			
		||||
 | 
			
		||||
    def get_num_users(self) -> Optional[int]:
 | 
			
		||||
        return self.table.count_documents({})
 | 
			
		||||
 | 
			
		||||
    def update_user_by_id(self, id: str, updated: dict) -> Optional[UserModel]:
 | 
			
		||||
        user = self.table.find_one_and_update(
 | 
			
		||||
            {"id": id}, {"$set": updated}, return_document=ReturnDocument.AFTER
 | 
			
		||||
 | 
			
		||||
@ -86,8 +86,9 @@ async def signin(form_data: SigninForm):
 | 
			
		||||
async def signup(form_data: SignupForm):
 | 
			
		||||
    if not Users.get_user_by_email(form_data.email.lower()):
 | 
			
		||||
        try:
 | 
			
		||||
            role = "admin" if Users.get_num_users() == 0 else "pending"
 | 
			
		||||
            hashed = get_password_hash(form_data.password)
 | 
			
		||||
            user = Auths.insert_new_auth(form_data.email, hashed, form_data.name)
 | 
			
		||||
            user = Auths.insert_new_auth(form_data.email, hashed, form_data.name, role)
 | 
			
		||||
 | 
			
		||||
            if user:
 | 
			
		||||
                token = create_token(data={"email": user.email})
 | 
			
		||||
 | 
			
		||||
@ -26,40 +26,36 @@ if ENV == "prod":
 | 
			
		||||
        OLLAMA_API_BASE_URL = "http://host.docker.internal:11434/api"
 | 
			
		||||
 | 
			
		||||
####################################
 | 
			
		||||
# OLLAMA_WEBUI_VERSION
 | 
			
		||||
# WEBUI_VERSION
 | 
			
		||||
####################################
 | 
			
		||||
 | 
			
		||||
OLLAMA_WEBUI_VERSION = os.environ.get("OLLAMA_WEBUI_VERSION", "v1.0.0-alpha.9")
 | 
			
		||||
WEBUI_VERSION = os.environ.get("WEBUI_VERSION", "v1.0.0-alpha.9")
 | 
			
		||||
 | 
			
		||||
####################################
 | 
			
		||||
# OLLAMA_WEBUI_AUTH
 | 
			
		||||
# WEBUI_AUTH
 | 
			
		||||
####################################
 | 
			
		||||
 | 
			
		||||
OLLAMA_WEBUI_AUTH = (
 | 
			
		||||
    True if os.environ.get("OLLAMA_WEBUI_AUTH", "TRUE") == "TRUE" else False
 | 
			
		||||
)
 | 
			
		||||
WEBUI_AUTH = True if os.environ.get("WEBUI_AUTH", "TRUE") == "TRUE" else False
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if OLLAMA_WEBUI_AUTH:
 | 
			
		||||
if WEBUI_AUTH:
 | 
			
		||||
    ####################################
 | 
			
		||||
    # OLLAMA_WEBUI_DB
 | 
			
		||||
    # WEBUI_DB
 | 
			
		||||
    ####################################
 | 
			
		||||
 | 
			
		||||
    OLLAMA_WEBUI_DB_URL = os.environ.get(
 | 
			
		||||
        "OLLAMA_WEBUI_DB_URL", "mongodb://root:root@localhost:27017/"
 | 
			
		||||
    WEBUI_DB_URL = os.environ.get(
 | 
			
		||||
        "WEBUI_DB_URL", "mongodb://root:root@localhost:27017/"
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    DB_CLIENT = MongoClient(f"{OLLAMA_WEBUI_DB_URL}?authSource=admin")
 | 
			
		||||
    DB_CLIENT = MongoClient(f"{WEBUI_DB_URL}?authSource=admin")
 | 
			
		||||
    DB = DB_CLIENT["ollama-webui"]
 | 
			
		||||
 | 
			
		||||
    ####################################
 | 
			
		||||
    # OLLAMA_WEBUI_JWT_SECRET_KEY
 | 
			
		||||
    # WEBUI_JWT_SECRET_KEY
 | 
			
		||||
    ####################################
 | 
			
		||||
 | 
			
		||||
    OLLAMA_WEBUI_JWT_SECRET_KEY = os.environ.get(
 | 
			
		||||
        "OLLAMA_WEBUI_JWT_SECRET_KEY", "t0p-s3cr3t"
 | 
			
		||||
    )
 | 
			
		||||
    WEBUI_JWT_SECRET_KEY = os.environ.get("WEBUI_JWT_SECRET_KEY", "t0p-s3cr3t")
 | 
			
		||||
 | 
			
		||||
    if ENV == "prod":
 | 
			
		||||
        if OLLAMA_WEBUI_JWT_SECRET_KEY == "":
 | 
			
		||||
            OLLAMA_WEBUI_JWT_SECRET_KEY = str(b64encode(token_bytes(32)).decode())
 | 
			
		||||
        if WEBUI_JWT_SECRET_KEY == "":
 | 
			
		||||
            WEBUI_JWT_SECRET_KEY = str(b64encode(token_bytes(32)).decode())
 | 
			
		||||
 | 
			
		||||
@ -9,7 +9,7 @@ import jwt
 | 
			
		||||
 | 
			
		||||
import config
 | 
			
		||||
 | 
			
		||||
JWT_SECRET_KEY = config.OLLAMA_WEBUI_JWT_SECRET_KEY
 | 
			
		||||
JWT_SECRET_KEY = config.WEBUI_JWT_SECRET_KEY
 | 
			
		||||
ALGORITHM = "HS256"
 | 
			
		||||
 | 
			
		||||
##############
 | 
			
		||||
 | 
			
		||||
@ -46,7 +46,8 @@ services:
 | 
			
		||||
      - 3000:8080
 | 
			
		||||
    environment:
 | 
			
		||||
      - "OLLAMA_API_BASE_URL=http://ollama:11434/api"
 | 
			
		||||
      - "OLLAMA_WEBUI_DB_URL=mongodb://root:example@ollama-webui-db:27017/"
 | 
			
		||||
      - "WEBUI_DB_URL=mongodb://root:example@ollama-webui-db:27017/"
 | 
			
		||||
      - "WEBUI_AUTH=TRUE"
 | 
			
		||||
    extra_hosts:
 | 
			
		||||
      - host.docker.internal:host-gateway
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
 | 
			
		||||
@ -3,8 +3,10 @@ import { PUBLIC_API_BASE_URL } from '$env/static/public';
 | 
			
		||||
 | 
			
		||||
export const OLLAMA_API_BASE_URL =
 | 
			
		||||
	PUBLIC_API_BASE_URL === ''
 | 
			
		||||
		? browser
 | 
			
		||||
		? dev
 | 
			
		||||
			? `http://${location.hostname}:8080/ollama/api`
 | 
			
		||||
			: browser
 | 
			
		||||
			? `http://${location.hostname}:11434/api`
 | 
			
		||||
			: `http://localhost:11434/api`
 | 
			
		||||
		: PUBLIC_API_BASE_URL;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user