fixes
This commit is contained in:
parent
6e80360d98
commit
8464398aaf
|
@ -8,7 +8,7 @@ from starlette.requests import HTTPConnection
|
||||||
|
|
||||||
from auth.credentials import AuthCredentials, AuthUser
|
from auth.credentials import AuthCredentials, AuthUser
|
||||||
from base.orm import local_session
|
from base.orm import local_session
|
||||||
from orm.user import User, Role, UserRole
|
from orm.user import User, Role
|
||||||
|
|
||||||
from settings import SESSION_TOKEN_HEADER
|
from settings import SESSION_TOKEN_HEADER
|
||||||
from auth.tokenstorage import SessionToken
|
from auth.tokenstorage import SessionToken
|
||||||
|
@ -40,11 +40,10 @@ class JWTAuthenticate(AuthenticationBackend):
|
||||||
try:
|
try:
|
||||||
user = (
|
user = (
|
||||||
session.query(User).options(
|
session.query(User).options(
|
||||||
joinedload(User.roles),
|
joinedload(User.roles).options(joinedload(Role.permissions)),
|
||||||
joinedload(Role.permissions),
|
|
||||||
joinedload(User.ratings)
|
joinedload(User.ratings)
|
||||||
).filter(
|
).filter(
|
||||||
User.id == id
|
User.id == payload.user_id
|
||||||
).one()
|
).one()
|
||||||
)
|
)
|
||||||
except exc.NoResultFound:
|
except exc.NoResultFound:
|
||||||
|
@ -53,7 +52,7 @@ class JWTAuthenticate(AuthenticationBackend):
|
||||||
if not user:
|
if not user:
|
||||||
return AuthCredentials(scopes=[]), AuthUser(user_id=None)
|
return AuthCredentials(scopes=[]), AuthUser(user_id=None)
|
||||||
|
|
||||||
scopes = [] # user.get_permission()
|
scopes = user.get_permission()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
AuthCredentials(
|
AuthCredentials(
|
||||||
|
@ -61,7 +60,7 @@ class JWTAuthenticate(AuthenticationBackend):
|
||||||
scopes=scopes,
|
scopes=scopes,
|
||||||
logged_in=True
|
logged_in=True
|
||||||
),
|
),
|
||||||
user,
|
AuthUser(user_id=user.id),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
InvalidToken("please try again")
|
InvalidToken("please try again")
|
||||||
|
|
2
main.py
2
main.py
|
@ -41,6 +41,7 @@ async def start_up():
|
||||||
|
|
||||||
async def dev_start_up():
|
async def dev_start_up():
|
||||||
if exists(DEV_SERVER_STATUS_FILE_NAME):
|
if exists(DEV_SERVER_STATUS_FILE_NAME):
|
||||||
|
await redis.connect()
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
with open(DEV_SERVER_STATUS_FILE_NAME, 'w', encoding='utf-8') as f:
|
with open(DEV_SERVER_STATUS_FILE_NAME, 'w', encoding='utf-8') as f:
|
||||||
|
@ -71,6 +72,7 @@ app.mount("/", GraphQL(schema, debug=True))
|
||||||
dev_app = app = Starlette(
|
dev_app = app = Starlette(
|
||||||
debug=True,
|
debug=True,
|
||||||
on_startup=[dev_start_up],
|
on_startup=[dev_start_up],
|
||||||
|
on_shutdown=[shutdown],
|
||||||
middleware=middleware,
|
middleware=middleware,
|
||||||
routes=routes,
|
routes=routes,
|
||||||
)
|
)
|
||||||
|
|
|
@ -9,7 +9,6 @@ from orm.shout import ShoutReactionsFollower
|
||||||
from orm.topic import TopicFollower
|
from orm.topic import TopicFollower
|
||||||
from orm.user import User
|
from orm.user import User
|
||||||
from orm.shout import Shout
|
from orm.shout import Shout
|
||||||
# from services.stat.reacted import ReactedStorage
|
|
||||||
|
|
||||||
ts = datetime.now(tz=timezone.utc)
|
ts = datetime.now(tz=timezone.utc)
|
||||||
|
|
||||||
|
@ -84,7 +83,6 @@ def migrate_ratings(session, entry, reaction_dict):
|
||||||
)
|
)
|
||||||
session.add(following2)
|
session.add(following2)
|
||||||
session.add(rr)
|
session.add(rr)
|
||||||
# await ReactedStorage.react(rr)
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("[migration] comment rating error: %r" % re_reaction_dict)
|
print("[migration] comment rating error: %r" % re_reaction_dict)
|
||||||
|
|
|
@ -9,7 +9,6 @@ from orm.reaction import Reaction, ReactionKind
|
||||||
from orm.shout import Shout, ShoutTopic, ShoutReactionsFollower
|
from orm.shout import Shout, ShoutTopic, ShoutReactionsFollower
|
||||||
from orm.user import User
|
from orm.user import User
|
||||||
from orm.topic import TopicFollower, Topic
|
from orm.topic import TopicFollower, Topic
|
||||||
# from services.stat.reacted import ReactedStorage
|
|
||||||
from services.stat.viewed import ViewedStorage
|
from services.stat.viewed import ViewedStorage
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
@ -365,7 +364,6 @@ async def content_ratings_to_reactions(entry, slug):
|
||||||
else:
|
else:
|
||||||
rea = Reaction.create(**reaction_dict)
|
rea = Reaction.create(**reaction_dict)
|
||||||
session.add(rea)
|
session.add(rea)
|
||||||
# await ReactedStorage.react(rea)
|
|
||||||
# shout_dict['ratings'].append(reaction_dict)
|
# shout_dict['ratings'].append(reaction_dict)
|
||||||
|
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
|
@ -101,7 +101,7 @@ class User(Base):
|
||||||
session.commit()
|
session.commit()
|
||||||
User.default_user = default
|
User.default_user = default
|
||||||
|
|
||||||
async def get_permission(self):
|
def get_permission(self):
|
||||||
scope = {}
|
scope = {}
|
||||||
for role in self.roles:
|
for role in self.roles:
|
||||||
for p in role.permissions:
|
for p in role.permissions:
|
||||||
|
|
|
@ -24,13 +24,15 @@ from settings import SESSION_TOKEN_HEADER, FRONTEND_URL
|
||||||
@mutation.field("getSession")
|
@mutation.field("getSession")
|
||||||
@login_required
|
@login_required
|
||||||
async def get_current_user(_, info):
|
async def get_current_user(_, info):
|
||||||
user = info.context["request"].user
|
context_user = info.context["request"].user
|
||||||
token = info.context["request"].headers.get("Authorization")
|
token = info.context["request"].headers.get(SESSION_TOKEN_HEADER)
|
||||||
if user and token:
|
|
||||||
user.lastSeen = datetime.now(tz=timezone.utc)
|
if context_user and token:
|
||||||
with local_session() as session:
|
with local_session() as session:
|
||||||
session.add(user)
|
user = session.query(User).where(User.id == context_user.user_id).one()
|
||||||
|
user.lastSeen = datetime.now(tz=timezone.utc)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"token": token,
|
"token": token,
|
||||||
"user": user,
|
"user": user,
|
||||||
|
|
|
@ -40,11 +40,10 @@ def add_author_stat_columns(q):
|
||||||
# func.sum(user_rating_aliased.value).label('rating_stat')
|
# func.sum(user_rating_aliased.value).label('rating_stat')
|
||||||
# )
|
# )
|
||||||
|
|
||||||
# q = q.add_columns(literal(0).label('commented_stat'))
|
q = q.add_columns(literal(0).label('commented_stat'))
|
||||||
|
# q = q.outerjoin(Reaction, and_(Reaction.createdBy == User.id, Reaction.body.is_not(None))).add_columns(
|
||||||
q = q.outerjoin(Reaction, and_(Reaction.createdBy == User.id, Reaction.body.is_not(None))).add_columns(
|
# func.count(distinct(Reaction.id)).label('commented_stat')
|
||||||
func.count(distinct(Reaction.id)).label('commented_stat')
|
# )
|
||||||
)
|
|
||||||
|
|
||||||
q = q.group_by(User.id)
|
q = q.group_by(User.id)
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,7 @@ async def update_topic(_, _info, inp):
|
||||||
return {"topic": topic}
|
return {"topic": topic}
|
||||||
|
|
||||||
|
|
||||||
async def topic_follow(user, slug):
|
def topic_follow(user, slug):
|
||||||
with local_session() as session:
|
with local_session() as session:
|
||||||
topic = session.query(Topic).where(Topic.slug == slug).one()
|
topic = session.query(Topic).where(Topic.slug == slug).one()
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ async def topic_follow(user, slug):
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
|
|
||||||
async def topic_unfollow(user, slug):
|
def topic_unfollow(user, slug):
|
||||||
with local_session() as session:
|
with local_session() as session:
|
||||||
sub = (
|
sub = (
|
||||||
session.query(TopicFollower).join(Topic).filter(
|
session.query(TopicFollower).join(Topic).filter(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user