diff --git a/desk/src/pages/ticket/TicketAgent.vue b/desk/src/pages/ticket/TicketAgent.vue index 89cca059d..3b0919582 100644 --- a/desk/src/pages/ticket/TicketAgent.vue +++ b/desk/src/pages/ticket/TicketAgent.vue @@ -189,6 +189,7 @@ import { Icon } from "@iconify/vue"; import { emitter } from "@/emitter"; import { socket } from "@/socket"; import { useAgentStore } from "@/stores/agent"; +import { useAuthStore } from "@/stores/auth"; import { useError } from "@/composables/error"; import TicketAgentActions from "./TicketAgentActions.vue"; import TicketAgentSidebar from "./TicketAgentSidebar.vue"; @@ -210,6 +211,7 @@ enum Mode { const props = defineProps

(); const agentStore = useAgentStore(); +const authStore = useAuthStore(); const ticket = createResource({ url: "helpdesk.helpdesk.doctype.hd_ticket.api.get_one", cache: ["Ticket", props.ticketId], @@ -265,17 +267,21 @@ const comment = createResource({ const response = createResource({ url: "run_doc_method", debounce: 300, - makeParams: () => ({ - dt: "HD Ticket", - dn: props.ticketId, - method: "reply_via_agent", - args: { - attachments: attachments.value.map((x) => x.name), - cc: cc.value, - bcc: bcc.value, - message: content.value, - }, - }), + makeParams: () => { + editor.value.editor.commands.insertContent("

---
"); + editor.value.editor.commands.insertContent(authStore.emailSignature); + return { + dt: "HD Ticket", + dn: props.ticketId, + method: "reply_via_agent", + args: { + attachments: attachments.value.map((x) => x.name), + cc: cc.value, + bcc: bcc.value, + message: content.value, + }, + }; + }, onSuccess: () => { clear(); emitter.emit("update:ticket"); diff --git a/desk/src/stores/auth.ts b/desk/src/stores/auth.ts index e2e52d810..b093f756e 100644 --- a/desk/src/stores/auth.ts +++ b/desk/src/stores/auth.ts @@ -22,11 +22,14 @@ export const useAuthStore = defineStore("auth", () => { }); const user__ = computed(() => userInfo.data || {}); - const hasDeskAccess: ComputedRef = computed( - () => user__.value.has_desk_access + const emailSignature: ComputedRef = computed( + () => user__.value.email_signature ); const isAdmin: ComputedRef = computed(() => user__.value.is_admin); const isAgent: ComputedRef = computed(() => user__.value.is_agent); + const hasDeskAccess: ComputedRef = computed( + () => isAdmin.value || isAgent.value + ); const isLoggedIn: ComputedRef = computed( () => !isEmpty(user__.value) ); @@ -84,6 +87,7 @@ export const useAuthStore = defineStore("auth", () => { } return { + emailSignature, hasDeskAccess, init, isAdmin, diff --git a/helpdesk/api/auth.py b/helpdesk/api/auth.py index 354f81928..4d86c9b3d 100644 --- a/helpdesk/api/auth.py +++ b/helpdesk/api/auth.py @@ -1,6 +1,6 @@ import frappe -from helpdesk.utils import is_agent as _is_agent +from helpdesk.utils import is_admin, is_agent @frappe.whitelist() @@ -8,6 +8,7 @@ def get_user(): current_user = frappe.session.user filters = {"name": current_user} fields = [ + "email_signature", "first_name", "full_name", "name", @@ -21,24 +22,15 @@ def get_user(): as_dict=True, ) - is_agent = _is_agent() - is_admin = user.username == "administrator" - has_desk_access = is_agent or is_admin - user_image = user.user_image - user_first_name = user.first_name - user_name = user.full_name - user_id = user.name - username = user.username - return { - "has_desk_access": has_desk_access, - "is_admin": is_admin, - "is_agent": is_agent, - "user_id": user_id, - "user_image": user_image, - "user_first_name": user_first_name, - "user_name": user_name, - "username": username, + "email_signature": user.email_signature, + "is_admin": is_admin(), + "is_agent": is_agent(), + "user_first_name": user.first_name, + "user_id": user.name, + "user_image": user.user_image, + "user_name": user.full_name, + "username": user.username, }