Skip to content

Commit 19d5b95

Browse files
committed
v0.2.1
1 parent 207e33b commit 19d5b95

File tree

2 files changed

+40
-51
lines changed

2 files changed

+40
-51
lines changed

README.md

Lines changed: 39 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -58,32 +58,29 @@ from sqlmodel import SQLModel
5858
app = FastAPI()
5959

6060
# 创建AdminSite实例
61-
site = AuthAdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///amisadmin.db'))
61+
site = AuthAdminSite(settings = Settings(database_url_async = 'sqlite+aiosqlite:///amisadmin.db'))
6262
auth = site.auth
6363
# 挂载后台管理系统
6464
site.mount_app(app)
6565

66-
6766
# 创建初始化数据库表
6867
@app.on_event("startup")
6968
async def startup():
70-
await site.db.async_run_sync(SQLModel.metadata.create_all, is_session=False)
69+
await site.db.async_run_sync(SQLModel.metadata.create_all, is_session = False)
7170
# 创建默认测试用户, 请及时修改密码!!!
7271
await auth.create_role_user('admin')
7372
await auth.create_role_user('vip')
7473

75-
7674
# 要求: 用户必须登录
7775
@app.get("/auth/get_user")
7876
@auth.requires()
7977
def get_user(request: Request):
8078
return request.user
8179

82-
8380
if __name__ == '__main__':
8481
import uvicorn
8582

86-
uvicorn.run(app, debug=True)
83+
uvicorn.run(app, debug = True)
8784

8885
```
8986

@@ -100,46 +97,40 @@ if __name__ == '__main__':
10097
def user(request: Request):
10198
return request.user # 当前请求用户对象.
10299

103-
104100
# 验证路由: 用户拥有admin角色
105101
@app.get("/auth/admin_roles")
106102
@auth.requires('admin')
107103
def admin_roles(request: Request):
108104
return request.user
109105

110-
111106
# 要求: 用户拥有vip角色
112107
# 支持同步/异步路由
113108
@app.get("/auth/vip_roles")
114109
@auth.requires(['vip'])
115110
async def vip_roles(request: Request):
116111
return request.user
117112

118-
119113
# 要求: 用户拥有admin角色 或 vip角色
120114
@app.get("/auth/admin_or_vip_roles")
121-
@auth.requires(roles=['admin', 'vip'])
115+
@auth.requires(roles = ['admin', 'vip'])
122116
def admin_or_vip_roles(request: Request):
123117
return request.user
124118

125-
126119
# 要求: 用户属于admin用户组
127120
@app.get("/auth/admin_groups")
128-
@auth.requires(groups=['admin'])
121+
@auth.requires(groups = ['admin'])
129122
def admin_groups(request: Request):
130123
return request.user
131124

132-
133125
# 要求: 用户拥有admin角色 且 属于admin用户组
134126
@app.get("/auth/admin_roles_and_admin_groups")
135-
@auth.requires(roles=['admin'], groups=['admin'])
127+
@auth.requires(roles = ['admin'], groups = ['admin'])
136128
def admin_roles_and_admin_groups(request: Request):
137129
return request.user
138130

139-
140131
# 要求: 用户拥有vip角色 且 拥有`article:update`权限
141132
@app.get("/auth/vip_roles_and_article_update")
142-
@auth.requires(roles=['vip'], permissions=['article:update'])
133+
@auth.requires(roles = ['vip'], permissions = ['article:update'])
143134
def vip_roles_and_article_update(request: Request):
144135
return request.user
145136

@@ -155,23 +146,19 @@ from typing import Tuple
155146
from fastapi_user_auth.auth import Auth
156147
from fastapi_user_auth.auth.models import User
157148

158-
159149
# 路由参数依赖项, 推荐使用此方式
160-
@app.get("/auth/admin_roles_depend_1")
150+
@app.get("/auth/admin_roles_depend_1")
161151
def admin_roles(user: User = Depends(auth.get_current_user)):
162-
return user # or request.user
163-
152+
return user # or request.user
164153

165154
# 路径操作装饰器依赖项
166-
@app.get("/auth/admin_roles_depend_2", dependencies=[Depends(auth.requires('admin')())])
155+
@app.get("/auth/admin_roles_depend_2", dependencies = [Depends(auth.requires('admin')())])
167156
def admin_roles(request: Request):
168157
return request.user
169158

170-
171159
# 全局依赖项
172160
# 在app应用下全部请求都要求拥有admin角色
173-
app = FastAPI(dependencies=[Depends(auth.requires('admin')())])
174-
161+
app = FastAPI(dependencies = [Depends(auth.requires('admin')())])
175162

176163
@app.get("/auth/admin_roles_depend_3")
177164
def admin_roles(request: Request):
@@ -197,10 +184,9 @@ auth.backend.attach_middleware(app)
197184
```python
198185
from fastapi_user_auth.auth.models import User
199186

200-
201187
async def get_request_user(request: Request) -> Optional[User]:
202188
# user= await auth.get_current_user(request)
203-
if await auth.requires('admin', response=False)(request):
189+
if await auth.requires('admin', response = False)(request):
204190
return request.user
205191
else:
206192
return None
@@ -219,14 +205,18 @@ from sqlalchemy.ext.asyncio import create_async_engine
219205
from sqlalchemy_database import AsyncDatabase
220206

221207
# 创建异步数据库引擎
222-
engine = create_async_engine(url='sqlite+aiosqlite:///amisadmin.db', future=True)
208+
engine = create_async_engine(url = 'sqlite+aiosqlite:///amisadmin.db', future = True)
223209
# 使用`JwtTokenStore`创建auth对象
224-
auth = Auth(db=AsyncDatabase(engine),
225-
token_store=JwtTokenStore(secret_key='09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7'))
210+
auth = Auth(
211+
db = AsyncDatabase(engine),
212+
token_store = JwtTokenStore(secret_key = '09d25e094faa6ca2556c818166b7a9563b93f7099f6f0f4caa6cf63b88e8d3e7')
213+
)
226214

227215
# 将auth对象传入AdminSite
228-
site = AuthAdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///amisadmin.db'),
229-
auth=auth)
216+
site = AuthAdminSite(
217+
settings = Settings(database_url_async = 'sqlite+aiosqlite:///amisadmin.db'),
218+
auth = auth
219+
)
230220

231221
```
232222

@@ -236,8 +226,10 @@ site = AuthAdminSite(settings=Settings(database_url_async='sqlite+aiosqlite:///a
236226
# 使用`DbTokenStore`创建auth对象
237227
from fastapi_user_auth.auth.backends.db import DbTokenStore
238228

239-
auth = Auth(db=AsyncDatabase(engine),
240-
token_store=DbTokenStore(db=AsyncDatabase(engine)))
229+
auth = Auth(
230+
db = AsyncDatabase(engine),
231+
token_store = DbTokenStore(db = AsyncDatabase(engine))
232+
)
241233
```
242234

243235
### RedisTokenStore
@@ -247,8 +239,10 @@ auth = Auth(db=AsyncDatabase(engine),
247239
from fastapi_user_auth.auth.backends.redis import RedisTokenStore
248240
from aioredis import Redis
249241

250-
auth = Auth(db=AsyncDatabase(engine),
251-
token_store=RedisTokenStore(redis=Redis.from_url('redis://localhost?db=0')))
242+
auth = Auth(
243+
db = AsyncDatabase(engine),
244+
token_store = RedisTokenStore(redis = Redis.from_url('redis://localhost?db=0'))
245+
)
252246
```
253247

254248
## RBAC模型
@@ -275,25 +269,23 @@ from datetime import date
275269
from fastapi_amis_admin.models.fields import Field
276270
from fastapi_user_auth.auth.models import BaseUser
277271

278-
279272
# 自定义`User`模型,继承`BaseUser`
280-
class MyUser(BaseUser, table=True):
281-
birthday: date = Field(None, title="出生日期")
282-
location: str = Field(None, title="位置")
283-
273+
class MyUser(BaseUser, table = True):
274+
birthday: date = Field(None, title = "出生日期")
275+
location: str = Field(None, title = "位置")
284276

285277
# 使用自定义的`User`模型,创建auth对象
286-
auth = Auth(db=AsyncDatabase(engine), user_model=MyUser)
278+
auth = Auth(db = AsyncDatabase(engine), user_model = MyUser)
287279
```
288280

289281
### 拓展`Role`,`Group`,`Permission`模型
290282

291283
```python
292284
# 自定义`Group`模型,继承`BaseRBAC`;覆盖`Role`,`Permission`模型类似,区别在于表名.
293-
class MyGroup(BaseRBAC, table=True):
285+
class MyGroup(BaseRBAC, table = True):
294286
__tablename__ = 'auth_group' # 数据库表名,必须是这个才能覆盖默认模型
295-
icon: str = Field(None, title='图标')
296-
is_active: bool = Field(default=True, title="是否激活")
287+
icon: str = Field(None, title = '图标')
288+
is_active: bool = Field(default = True, title = "是否激活")
297289

298290
```
299291

@@ -307,24 +299,21 @@ class MyGroup(BaseRBAC, table=True):
307299
# 自定义模型管理类,继承重写对应的默认管理类
308300
class MyGroupAdmin(admin.ModelAdmin):
309301
group_schema = None
310-
page_schema = PageSchema(label='用户组管理', icon='fa fa-group')
302+
page_schema = PageSchema(label = '用户组管理', icon = 'fa fa-group')
311303
model = MyGroup
312304
link_model_fields = [Group.roles]
313305
readonly_fields = ['key']
314306

315-
316307
# 自定义用户认证应用,继承重写默认的用户认证应用
317308
class MyUserAuthApp(UserAuthApp):
318309
GroupAdmin = MyGroupAdmin
319310

320-
321311
# 自定义用户管理站点,继承重写默认的用户管理站点
322312
class MyAuthAdminSite(AuthAdminSite):
323313
UserAuthApp = MyUserAuthApp
324314

325-
326315
# 使用自定义的`AuthAdminSite`类,创建site对象
327-
site = MyAuthAdminSite(settings, auth=auth)
316+
site = MyAuthAdminSite(settings, auth = auth)
328317
```
329318

330319
## 界面预览
@@ -350,6 +339,6 @@ site = MyAuthAdminSite(settings, auth=auth)
350339
感谢以下开发者对 FastAPI-User-Auth 作出的贡献:
351340

352341
<a href="https://github.com/amisadmin/fastapi_user_auth/graphs/contributors">
353-
<img src="https://contrib.rocks/image?repo=amisadmin/fastapi_user_auth" />
342+
<img src="https://contrib.rocks/image?repo=amisadmin/fastapi_user_auth" alt=""/>
354343
</a>
355344

fastapi_user_auth/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "0.2.0"
1+
__version__ = "0.2.1"
22
__url__ = "https://github.com/amisadmin/fastapi_user_auth"
33

44
import gettext

0 commit comments

Comments
 (0)