fix: issue with roles on profile page
This commit is contained in:
@@ -15,7 +15,11 @@
|
|||||||
:placeholder="__('Search')"
|
:placeholder="__('Search')"
|
||||||
type="text"
|
type="text"
|
||||||
:debounce="300"
|
:debounce="300"
|
||||||
/>
|
>
|
||||||
|
<template #prefix>
|
||||||
|
<Search class="size-4 stroke-1.5 text-ink-gray-6" />
|
||||||
|
</template>
|
||||||
|
</FormControl>
|
||||||
<Button @click="() => (showForm = !showForm)">
|
<Button @click="() => (showForm = !showForm)">
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
<Plus class="size-4 stroke-1.5" />
|
<Plus class="size-4 stroke-1.5" />
|
||||||
@@ -25,7 +29,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mt-2 pb-10 overflow-auto">
|
<div class="mt-5 pb-10 overflow-auto">
|
||||||
<!-- Member list -->
|
<!-- Member list -->
|
||||||
<div class="overflow-y-scroll">
|
<div class="overflow-y-scroll">
|
||||||
<ul class="divide-y">
|
<ul class="divide-y">
|
||||||
@@ -58,7 +62,7 @@
|
|||||||
v-if="member.role && member.role !== 'LMS Student'"
|
v-if="member.role && member.role !== 'LMS Student'"
|
||||||
>
|
>
|
||||||
<Shield class="size-4 stroke-1.5" />
|
<Shield class="size-4 stroke-1.5" />
|
||||||
<span>
|
<span class="text-sm">
|
||||||
{{ getRole(member.role) }}
|
{{ getRole(member.role) }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -123,7 +127,7 @@ import {
|
|||||||
} from 'frappe-ui'
|
} from 'frappe-ui'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { ref, watch, reactive, inject } from 'vue'
|
import { ref, watch, reactive, inject } from 'vue'
|
||||||
import { RefreshCw, Plus, X, Shield } from 'lucide-vue-next'
|
import { RefreshCw, Plus, Search, Shield } from 'lucide-vue-next'
|
||||||
import { useOnboarding } from 'frappe-ui/frappe'
|
import { useOnboarding } from 'frappe-ui/frappe'
|
||||||
import type { User } from '@/components/Settings/types'
|
import type { User } from '@/components/Settings/types'
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@
|
|||||||
v-model="activeTab"
|
v-model="activeTab"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<router-view :profile="profile" />
|
<router-view :profile="profile" :key="profile.data?.name" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<EditProfile
|
<EditProfile
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import { FormControl, createResource, toast } from 'frappe-ui'
|
import { FormControl, createResource, toast } from 'frappe-ui'
|
||||||
import { ref } from 'vue'
|
import { ref, watch } from 'vue'
|
||||||
import { convertToTitleCase } from '@/utils'
|
import { convertToTitleCase } from '@/utils'
|
||||||
import { CircleAlert } from 'lucide-vue-next'
|
import { CircleAlert } from 'lucide-vue-next'
|
||||||
|
|
||||||
@@ -66,10 +66,9 @@ const roles = createResource({
|
|||||||
url: 'lms.lms.utils.get_roles',
|
url: 'lms.lms.utils.get_roles',
|
||||||
makeParams(values) {
|
makeParams(values) {
|
||||||
return {
|
return {
|
||||||
name: props.profile.data?.name,
|
name: values.member,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
auto: true,
|
|
||||||
onSuccess(data) {
|
onSuccess(data) {
|
||||||
let roles = [
|
let roles = [
|
||||||
'moderator',
|
'moderator',
|
||||||
@@ -83,6 +82,16 @@ const roles = createResource({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.profile,
|
||||||
|
(newValue) => {
|
||||||
|
roles.reload({
|
||||||
|
member: newValue.data?.name,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
)
|
||||||
|
|
||||||
const updateRole = createResource({
|
const updateRole = createResource({
|
||||||
url: 'lms.lms.api.save_role',
|
url: 'lms.lms.api.save_role',
|
||||||
makeParams(values) {
|
makeParams(values) {
|
||||||
@@ -97,7 +106,10 @@ const updateRole = createResource({
|
|||||||
const changeRole = (role) => {
|
const changeRole = (role) => {
|
||||||
updateRole.submit(
|
updateRole.submit(
|
||||||
{
|
{
|
||||||
role: convertToTitleCase(role.split('_').join(' ')),
|
role:
|
||||||
|
role == 'lms_student'
|
||||||
|
? 'LMS Student'
|
||||||
|
: convertToTitleCase(role.split('_').join(' ')),
|
||||||
value: eval(role).value,
|
value: eval(role).value,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -714,7 +714,14 @@ def get_members(start=0, search=""):
|
|||||||
)
|
)
|
||||||
|
|
||||||
for member in members:
|
for member in members:
|
||||||
roles = frappe.get_roles(member.name)
|
roles = frappe.get_all(
|
||||||
|
"Has Role",
|
||||||
|
{
|
||||||
|
"parent": member.name,
|
||||||
|
"parenttype": "User",
|
||||||
|
},
|
||||||
|
pluck="role",
|
||||||
|
)
|
||||||
if "Moderator" in roles:
|
if "Moderator" in roles:
|
||||||
member.role = "Moderator"
|
member.role = "Moderator"
|
||||||
elif "Course Creator" in roles:
|
elif "Course Creator" in roles:
|
||||||
|
|||||||
@@ -537,11 +537,10 @@ def has_course_evaluator_role(member=None):
|
|||||||
|
|
||||||
|
|
||||||
def has_student_role(member=None):
|
def has_student_role(member=None):
|
||||||
roles = frappe.get_roles(member or frappe.session.user)
|
return frappe.db.get_value(
|
||||||
return (
|
"Has Role",
|
||||||
"Moderator" not in roles
|
{"parent": member or frappe.session.user, "role": "LMS Student"},
|
||||||
and "Course Creator" not in roles
|
"name",
|
||||||
and "Batch Evaluator" not in roles
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user