Skip to content

Commit

Permalink
Started implementing chat via vuejs + typescript
Browse files Browse the repository at this point in the history
Added webpack config
Refactored django so it authorizes via header
  • Loading branch information
akoidan committed Jun 9, 2018
1 parent a1b6712 commit c49392d
Show file tree
Hide file tree
Showing 32 changed files with 13,593 additions and 0 deletions.
31 changes: 31 additions & 0 deletions chat/auth_middleware.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from django.conf import settings
from django.contrib.auth.models import AnonymousUser
from importlib import import_module
from redis_sessions.session import SessionStore

from chat.models import User

sessionStore = SessionStore()


class AuthorizationMiddleware(object):
"""
Middleware to set user cookie
If user is authenticated and there is no cookie, set the cookie,
If the user is not authenticated and the cookie remains, delete it
"""
def __init__(self):
engine = import_module(settings.SESSION_ENGINE)
self.SessionStore = engine.SessionStore

def process_request(self, request):
session_key = request.META.get('HTTP_SESSION_ID', None)
if not hasattr(request, 'user'):
if sessionStore.exists(session_key):
request.session = SessionStore(session_key)
user_id = int(request.session["_auth_user_id"])
request.user = User.objects.get(id=user_id)
else:
request.user = AnonymousUser()
# TODO
request.session = SessionStore()
55 changes: 55 additions & 0 deletions fe/global.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
interface RootState {
isOnline: boolean;
growls: string[];
}

interface MessageDb {
id: number;
time: number;
content: string;
symbol: string;
deleted: number;
giphy: string;
edited: number;
roomId: number;
userId: number;
}

interface FileModel {
id: number;
url: string;
type: string;
preview: string;
}

interface MessageModel {
id: number;
time: number;
files: Map<number, FileModel>;
content: string;
symbol: string;
deleted: boolean;
giphy: string;
edited: number;
roomId: number;
userId: number;
}


interface IStorage {
getIds(cb: ObjectCb);
saveMessages(messages: MessageModel[]);
deleteMessage(id: number);
clearStorage();
connect(cb: Function);
getRoomHeaderId(roomId: number, cb: NumberCb);
setRoomHeaderId(roomId: number, value: number);
}

interface ObjectCb {
(t: object): void;
}

interface NumberCb {
(t: number): void;
}
19 changes: 19 additions & 0 deletions fe/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>pychat</title>

</head>

<body>

<div id="app"></div>
<script src="/dist/main.js"></script>

</body>

</html>
Loading

0 comments on commit c49392d

Please sign in to comment.