Add logout functionality

Remove unused imports

Add file header

Check response

remove file headers
This commit is contained in:
Christian Cueni 2018-10-22 16:47:55 +02:00
parent 867dc72abd
commit 93ad822457
7 changed files with 68 additions and 1 deletions

View File

@ -3,17 +3,28 @@
<user-icon class="user-widget__avatar" :src="avatar"></user-icon> <user-icon class="user-widget__avatar" :src="avatar"></user-icon>
<span class="user-widget__name">{{firstName}} {{lastName}}</span> <span class="user-widget__name">{{firstName}} {{lastName}}</span>
<span class="user-widget__date" v-if="date">{{date}}</span> <span class="user-widget__date" v-if="date">{{date}}</span>
<button class="user-widget__logout" @click="logout()">Logout</button>
</div> </div>
</template> </template>
<script> <script>
import UserIcon from '@/components/icons/UserIcon'; import UserIcon from '@/components/icons/UserIcon';
import LOGOUT_MUTATION from '@/graphql/gql/mutations/logoutUser.gql';
export default { export default {
props: ['firstName', 'lastName', 'avatar', 'date'], props: ['firstName', 'lastName', 'avatar', 'date'],
components: { components: {
UserIcon UserIcon
},
methods: {
logout() {
this.$apollo.mutate({
mutation: LOGOUT_MUTATION,
}).then(({data}) => {
if (data.logout.success) { location.replace('/') }
});
}
} }
} }
</script> </script>
@ -36,6 +47,18 @@
font-family: $sans-serif-font-family; font-family: $sans-serif-font-family;
} }
&__logout {
font-family: $sans-serif-font-family;
line-height: 16px;
margin: 0 15px 0 20px;
background: none;
color: inherit;
border: none;
padding: 0;
cursor: pointer;
outline: inherit;
}
&__avatar { &__avatar {
width: 30px; width: 30px;
height: 30px; height: 30px;

View File

@ -0,0 +1,5 @@
mutation {
logout {
success
}
}

View File

@ -9,6 +9,7 @@ from assignments.schema.mutations import AssignmentMutations
from assignments.schema.queries import AssignmentsQuery, StudentSubmissionQuery from assignments.schema.queries import AssignmentsQuery, StudentSubmissionQuery
from books.schema.mutations.main import BookMutations from books.schema.mutations.main import BookMutations
from books.schema.queries import BookQuery from books.schema.queries import BookQuery
from core.schema.mutations.main import CoreMutations
from objectives.mutations import ObjectiveMutations from objectives.mutations import ObjectiveMutations
from objectives.schema import ObjectivesQuery from objectives.schema import ObjectivesQuery
from rooms.mutations import RoomMutations from rooms.mutations import RoomMutations
@ -24,7 +25,8 @@ class Query(UsersQuery, RoomsQuery, ObjectivesQuery, BookQuery, AssignmentsQuery
debug = graphene.Field(DjangoDebug, name='__debug') debug = graphene.Field(DjangoDebug, name='__debug')
class Mutation(BookMutations, RoomMutations, AssignmentMutations, ObjectiveMutations, graphene.ObjectType): class Mutation(BookMutations, RoomMutations, AssignmentMutations, ObjectiveMutations, CoreMutations,
graphene.ObjectType):
if settings.DEBUG: if settings.DEBUG:
debug = graphene.Field(DjangoDebug, name='__debug') debug = graphene.Field(DjangoDebug, name='__debug')

View File

View File

View File

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
#
# ITerativ GmbH
# http://www.iterativ.ch/
#
# Copyright (c) 2018 ITerativ GmbH. All rights reserved.
#
# Created on 22.10.18
# @author: chrigu <christian.cueni@iterativ.ch>
import graphene
from django.contrib.auth import logout
class Logout(graphene.Mutation):
success = graphene.Boolean()
def mutate(self, info, **kwargs):
try:
logout(info.context)
return Logout(success=True)
except Exception:
return Logout(success=False)

View File

@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
#
# ITerativ GmbH
# http://www.iterativ.ch/
#
# Copyright (c) 2018 ITerativ GmbH. All rights reserved.
#
# Created on 22.10.18
# @author: chrigu <christian.cueni@iterativ.ch>
from core.schema.mutations.logout import Logout
class CoreMutations(object):
logout = Logout.Field()