Skip to content

Commit 04224df

Browse files
resend password email
1 parent 29d3613 commit 04224df

File tree

5 files changed

+30
-5
lines changed

5 files changed

+30
-5
lines changed

src/api/classroom.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Vue from 'vue'
2-
import { ClassroomListRes, ClassroomDetailRes, ClassroomCreateReq, AddStudentReq, RemoveStudentReq, AddReadingExercisesReq, RemoveReadingExercisesReq, ReadingExerciseReportRes, GetStudentReportReq, ClassroomUpdateReq } from '@/interfaces/api/classroom'
2+
import { ClassroomListRes, ClassroomDetailRes, ClassroomCreateReq, AddStudentReq, RemoveStudentReq, AddReadingExercisesReq, RemoveReadingExercisesReq, ReadingExerciseReportRes, GetStudentReportReq, ClassroomUpdateReq, ResendPasswordEmailReq } from '@/interfaces/api/classroom'
33
import { Classroom } from '@/interfaces/classroom'
44
import { endpoints, replacePk } from './endpoints'
55

@@ -51,9 +51,14 @@ export const classroom = {
5151
await Vue.axios.post(endpoint, payload)
5252
},
5353

54-
async getStudentReport (classroomPk: Classroom['pk'], params: GetStudentReportReq): Promise<ReadingExerciseReportRes[]> {
55-
const endpoint = replacePk(endpoints.classroom.studentReadingReport, classroomPk)
54+
async getStudentReport (pk: Classroom['pk'], params: GetStudentReportReq): Promise<ReadingExerciseReportRes[]> {
55+
const endpoint = replacePk(endpoints.classroom.studentReadingReport, pk)
5656
const res = await Vue.axios.get(endpoint, { params })
5757
return res.data
58+
},
59+
60+
async resendPasswordEmail (pk: Classroom['pk'], payload: ResendPasswordEmailReq): Promise<void> {
61+
const endpoint = replacePk(endpoints.classroom.resendPasswordEmail, pk)
62+
await Vue.axios.post(endpoint, payload)
5863
}
5964
}

src/api/endpoints.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ export const endpoints = {
2222
removeStudents: '/classroom/classrooms/<pk>/remove-students/',
2323
addReadingExercises: '/classroom/classrooms/<pk>/add-reading-exercises/',
2424
removeReadingExercises: '/classroom/classrooms/<pk>/remove-reading-exercises/',
25-
studentReadingReport: '/classroom/classrooms/<pk>/student-reading-report/'
25+
studentReadingReport: '/classroom/classrooms/<pk>/student-reading-report/',
26+
resendPasswordEmail: '/classroom/classrooms/<pk>/resend-password-email/'
2627
},
2728
readingExercise: {
2829
list: '/classroom/reading-exercises/',

src/interfaces/api/classroom.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,7 @@ export declare interface GetStudentReportReq {
3939
exercise_pk?: number;
4040
show_detail?: boolean;
4141
}
42+
43+
export declare interface ResendPasswordEmailReq {
44+
email: string;
45+
}

src/interfaces/user.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ export declare interface User {
77
user_type: 'teacher' | 'student';
88
avatar: string | null;
99
avatar_thumbnail: string | null;
10+
last_login: string | null;
1011
}

src/views/classroom/ClassroomStudents.vue

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,10 @@
8282
</v-icon>
8383
</template>
8484
<v-list dense>
85-
<v-list-item>
85+
<v-list-item
86+
:disabled="item.last_login !== null"
87+
@click="resendPasswordEmail(item)"
88+
>
8689
<v-list-item-icon>
8790
<v-icon>
8891
mdi-email-outline
@@ -135,6 +138,7 @@ import { assertErrCode, status } from '@/utils/status-codes'
135138
import { Vue, Component } from 'vue-property-decorator'
136139
import { mapState } from 'vuex'
137140
import KLDialogConfirm from '@/components/KLDialogConfirm.vue'
141+
import { Api } from '@/api'
138142
139143
@Component({
140144
computed: {
@@ -252,6 +256,16 @@ export default class ClassroomStudents extends Vue {
252256
this.loadingRemove = false
253257
})
254258
}
259+
260+
/**
261+
* Resend password email
262+
*/
263+
resendPasswordEmail (student: User): void {
264+
Api.classroom.resendPasswordEmail(this.classroom.pk, {
265+
email: student.email
266+
})
267+
.catch(unexpectedExc)
268+
}
255269
}
256270
</script>
257271

0 commit comments

Comments
 (0)