forked from open-webui/open-webui
		
	feat: set first user to admin by default
This commit is contained in:
		
							parent
							
								
									07d2c9871f
								
							
						
					
					
						commit
						83ff1d77ea
					
				
					 8 changed files with 28 additions and 25 deletions
				
			
		|  | @ -9,7 +9,7 @@ import json | ||||||
| from apps.web.models.users import Users | from apps.web.models.users import Users | ||||||
| from constants import ERROR_MESSAGES | from constants import ERROR_MESSAGES | ||||||
| from utils.utils import extract_token_from_auth_header | 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__) | app = Flask(__name__) | ||||||
| CORS( | CORS( | ||||||
|  | @ -32,7 +32,7 @@ def proxy(path): | ||||||
|     headers = dict(request.headers) |     headers = dict(request.headers) | ||||||
| 
 | 
 | ||||||
|     # Basic RBAC support |     # Basic RBAC support | ||||||
|     if OLLAMA_WEBUI_AUTH: |     if WEBUI_AUTH: | ||||||
|         if "Authorization" in headers: |         if "Authorization" in headers: | ||||||
|             token = extract_token_from_auth_header(headers["Authorization"]) |             token = extract_token_from_auth_header(headers["Authorization"]) | ||||||
|             user = Users.get_user_by_token(token) |             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 fastapi.middleware.cors import CORSMiddleware | ||||||
| 
 | 
 | ||||||
| from apps.web.routers import auths, users | 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() | app = FastAPI() | ||||||
| 
 | 
 | ||||||
|  | @ -23,4 +23,4 @@ app.include_router(users.router, prefix="/users", tags=["users"]) | ||||||
| 
 | 
 | ||||||
| @app.get("/") | @app.get("/") | ||||||
| async def get_status(): | 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]: |     def update_user_by_id(self, id: str, updated: dict) -> Optional[UserModel]: | ||||||
|         user = self.table.find_one_and_update( |         user = self.table.find_one_and_update( | ||||||
|             {"id": id}, {"$set": updated}, return_document=ReturnDocument.AFTER |             {"id": id}, {"$set": updated}, return_document=ReturnDocument.AFTER | ||||||
|  |  | ||||||
|  | @ -86,8 +86,9 @@ async def signin(form_data: SigninForm): | ||||||
| async def signup(form_data: SignupForm): | async def signup(form_data: SignupForm): | ||||||
|     if not Users.get_user_by_email(form_data.email.lower()): |     if not Users.get_user_by_email(form_data.email.lower()): | ||||||
|         try: |         try: | ||||||
|  |             role = "admin" if Users.get_num_users() == 0 else "pending" | ||||||
|             hashed = get_password_hash(form_data.password) |             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: |             if user: | ||||||
|                 token = create_token(data={"email": user.email}) |                 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_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 = ( | WEBUI_AUTH = True if os.environ.get("WEBUI_AUTH", "TRUE") == "TRUE" else False | ||||||
|     True if os.environ.get("OLLAMA_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( |     WEBUI_DB_URL = os.environ.get( | ||||||
|         "OLLAMA_WEBUI_DB_URL", "mongodb://root:root@localhost:27017/" |         "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"] |     DB = DB_CLIENT["ollama-webui"] | ||||||
| 
 | 
 | ||||||
|     #################################### |     #################################### | ||||||
|     # OLLAMA_WEBUI_JWT_SECRET_KEY |     # WEBUI_JWT_SECRET_KEY | ||||||
|     #################################### |     #################################### | ||||||
| 
 | 
 | ||||||
|     OLLAMA_WEBUI_JWT_SECRET_KEY = os.environ.get( |     WEBUI_JWT_SECRET_KEY = os.environ.get("WEBUI_JWT_SECRET_KEY", "t0p-s3cr3t") | ||||||
|         "OLLAMA_WEBUI_JWT_SECRET_KEY", "t0p-s3cr3t" |  | ||||||
|     ) |  | ||||||
| 
 | 
 | ||||||
|     if ENV == "prod": |     if ENV == "prod": | ||||||
|         if OLLAMA_WEBUI_JWT_SECRET_KEY == "": |         if WEBUI_JWT_SECRET_KEY == "": | ||||||
|             OLLAMA_WEBUI_JWT_SECRET_KEY = str(b64encode(token_bytes(32)).decode()) |             WEBUI_JWT_SECRET_KEY = str(b64encode(token_bytes(32)).decode()) | ||||||
|  |  | ||||||
|  | @ -9,7 +9,7 @@ import jwt | ||||||
| 
 | 
 | ||||||
| import config | import config | ||||||
| 
 | 
 | ||||||
| JWT_SECRET_KEY = config.OLLAMA_WEBUI_JWT_SECRET_KEY | JWT_SECRET_KEY = config.WEBUI_JWT_SECRET_KEY | ||||||
| ALGORITHM = "HS256" | ALGORITHM = "HS256" | ||||||
| 
 | 
 | ||||||
| ############## | ############## | ||||||
|  |  | ||||||
|  | @ -46,7 +46,8 @@ services: | ||||||
|       - 3000:8080 |       - 3000:8080 | ||||||
|     environment: |     environment: | ||||||
|       - "OLLAMA_API_BASE_URL=http://ollama:11434/api" |       - "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: |     extra_hosts: | ||||||
|       - host.docker.internal:host-gateway |       - host.docker.internal:host-gateway | ||||||
|     restart: unless-stopped |     restart: unless-stopped | ||||||
|  |  | ||||||
|  | @ -3,8 +3,10 @@ import { PUBLIC_API_BASE_URL } from '$env/static/public'; | ||||||
| 
 | 
 | ||||||
| export const OLLAMA_API_BASE_URL = | export const OLLAMA_API_BASE_URL = | ||||||
| 	PUBLIC_API_BASE_URL === '' | 	PUBLIC_API_BASE_URL === '' | ||||||
| 		? browser | 		? dev | ||||||
| 			? `http://${location.hostname}:8080/ollama/api` | 			? `http://${location.hostname}:8080/ollama/api` | ||||||
|  | 			: browser | ||||||
|  | 			? `http://${location.hostname}:11434/api` | ||||||
| 			: `http://localhost:11434/api` | 			: `http://localhost:11434/api` | ||||||
| 		: PUBLIC_API_BASE_URL; | 		: PUBLIC_API_BASE_URL; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy J. Baek
						Timothy J. Baek