diff --git a/backend/open_webui/models/auths.py b/backend/open_webui/models/auths.py index 962c57c..85e2a7c 100644 --- a/backend/open_webui/models/auths.py +++ b/backend/open_webui/models/auths.py @@ -103,6 +103,8 @@ class AuthsTable: profile_image_url: str = "/user.png", role: str = "pending", oauth_sub: Optional[str] = None, + permissions: Optional[str] = None, + subscription: Optional[str] = None ) -> Optional[UserModel]: with get_db() as db: log.info("insert_new_auth") @@ -116,7 +118,7 @@ class AuthsTable: db.add(result) user = Users.insert_new_user( - id, name, email, profile_image_url, role, oauth_sub + id, name, email, profile_image_url, role, oauth_sub, permissions, subscription ) db.commit() @@ -202,8 +204,8 @@ class AuthsTable: except Exception: return False - def update_user_profile(self, id: str, name: str, profile_image_url: str, role: str, permissions: dict) -> bool: - result = Users.update_user_profile(id, name, profile_image_url, role, permissions) + def update_user_profile(self, id: str, name: str, profile_image_url: str, role: str, permissions: dict, subscription: dict) -> bool: + result = Users.update_user_profile(id, name, profile_image_url, role, permissions, subscription) return True if result == 1 else False Auths = AuthsTable() diff --git a/backend/open_webui/models/users.py b/backend/open_webui/models/users.py index 62193e8..1feb69c 100644 --- a/backend/open_webui/models/users.py +++ b/backend/open_webui/models/users.py @@ -36,6 +36,7 @@ class User(Base): oauth_sub = Column(Text, unique=True) permissions = Column(JSON, nullable=True) + subscription = Column(JSON, nullable=True) class UserSettings(BaseModel): @@ -62,6 +63,8 @@ class UserModel(BaseModel): oauth_sub: Optional[str] = None permissions: Optional[dict] = None + + subscription: Optional[dict] = None model_config = ConfigDict(from_attributes=True) @@ -108,6 +111,8 @@ class UsersTable: profile_image_url: str = "/user.png", role: str = "pending", oauth_sub: Optional[str] = None, + permissions: Optional[str] = None, + subscription: Optional[str] = None ) -> Optional[UserModel]: with get_db() as db: user = UserModel( @@ -121,6 +126,8 @@ class UsersTable: "created_at": int(time.time()), "updated_at": int(time.time()), "oauth_sub": oauth_sub, + "permissions": permissions, + "subscription": subscription } ) result = User(**user.model_dump()) @@ -335,14 +342,15 @@ class UsersTable: users = db.query(User).filter(User.id.in_(user_ids)).all() return [user.id for user in users] - def update_user_profile(self, id: str, name: str, profile_image_url: str, role: str, permissions: dict) -> bool: + def update_user_profile(self, id: str, name: str, profile_image_url: str, role: str, permissions: dict, subscription: dict) -> bool: try: with get_db() as db: result = db.query(User).filter_by(id=id).update({ "name": name, "profile_image_url": profile_image_url, "role": role, - "permissions": permissions + "permissions": permissions, + "subscription": subscription }) db.commit() return result diff --git a/backend/open_webui/utils/oauth.py b/backend/open_webui/utils/oauth.py index c91bd61..933d738 100644 --- a/backend/open_webui/utils/oauth.py +++ b/backend/open_webui/utils/oauth.py @@ -313,7 +313,8 @@ class OAuthManager: user_data.get("name", ""), user_data.get("profile_image_url", ""), user_data.get("role", self.get_user_role(None, user_data)), - user_data.get("permissions", None) + user_data.get("permissions", None), + user_data.get("subscription", None) ) if not user: