add: backend api auth by apikey/apikey gen/apikey revoke
This commit is contained in:
25
db/models/APIKey.py
Normal file
25
db/models/APIKey.py
Normal file
@@ -0,0 +1,25 @@
|
||||
from datetime import datetime, timedelta, UTC
|
||||
from sqlalchemy import Column, String, DateTime, Boolean, JSON
|
||||
from db.models import Base
|
||||
|
||||
class APIKey(Base):
|
||||
__tablename__ = 'apikey'
|
||||
|
||||
key = Column(String(64), primary_key=True)
|
||||
name = Column(String(255), nullable=False)
|
||||
created_at = Column(DateTime, nullable=False, default=lambda: datetime.now(UTC))
|
||||
last_used_at = Column(DateTime)
|
||||
is_active = Column(Boolean, default=True)
|
||||
roles = Column(JSON, nullable=False, default=list)
|
||||
expire = Column(DateTime, nullable=False, default=lambda: datetime.now(UTC) + timedelta(days=15))
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
"key": self.key,
|
||||
"name": self.name,
|
||||
"created_at": self.created_at.isoformat() if self.created_at else None,
|
||||
"last_used_at": self.last_used_at.isoformat() if self.last_used_at else None,
|
||||
"is_active": self.is_active,
|
||||
"roles": self.roles,
|
||||
"expire": self.expire.isoformat() if self.expire else None
|
||||
}
|
||||
Reference in New Issue
Block a user