From fbc618706297ad17b987f2594a2a48a44cad609f Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Thu, 16 Dec 2021 10:06:58 +0530 Subject: [PATCH] fix: profile settings --- .../doctype/lms_settings/lms_settings.json | 17 ++++++++++++++-- .../lms/doctype/lms_settings/lms_settings.py | 12 ++++++++++- school/public/js/profile.js | 20 ++++++++++++++++++- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/school/lms/doctype/lms_settings/lms_settings.json b/school/lms/doctype/lms_settings/lms_settings.json index 4f539a26..f5340711 100644 --- a/school/lms/doctype/lms_settings/lms_settings.json +++ b/school/lms/doctype/lms_settings/lms_settings.json @@ -13,7 +13,9 @@ "mentor_request_status_update", "search_settings_section", "show_search", - "search_placeholder" + "search_placeholder", + "profile_restrictions_section", + "force_profile_completion" ], "fields": [ { @@ -65,12 +67,23 @@ "fieldname": "search_placeholder", "fieldtype": "Data", "label": "Search Field Placeholder" + }, + { + "fieldname": "profile_restrictions_section", + "fieldtype": "Section Break", + "label": "Profile Restrictions" + }, + { + "default": "0", + "fieldname": "force_profile_completion", + "fieldtype": "Check", + "label": "Force users to complete their Profile" } ], "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2021-11-25 14:12:21.514922", + "modified": "2021-12-15 11:30:06.506403", "modified_by": "Administrator", "module": "LMS", "name": "LMS Settings", diff --git a/school/lms/doctype/lms_settings/lms_settings.py b/school/lms/doctype/lms_settings/lms_settings.py index 90ecdd6d..46064cd3 100644 --- a/school/lms/doctype/lms_settings/lms_settings.py +++ b/school/lms/doctype/lms_settings/lms_settings.py @@ -3,8 +3,18 @@ # For license information, please see license.txt from __future__ import unicode_literals -# import frappe +import frappe from frappe.model.document import Document class LMSSettings(Document): pass + +@frappe.whitelist() +def check_profile_restriction(): + force_profile_completion = frappe.db.get_single_value("LMS Settings", "force_profile_completion") + user = frappe.db.get_value("User", frappe.session.user, ["profile_complete", "username"], as_dict=True) + return { + "redirect": force_profile_completion and not user.profile_complete, + "username": user.username, + "prefix": frappe.get_hooks("profile_url_prefix") or "/users/" + } diff --git a/school/public/js/profile.js b/school/public/js/profile.js index b3f4bc28..f3879c2a 100644 --- a/school/public/js/profile.js +++ b/school/public/js/profile.js @@ -1,6 +1,24 @@ frappe.ready(() => { + hide_profile_for_guest_users(); + restrict_users_to_profile_page(); +}); + +const hide_profile_for_guest_users = () => { if (frappe.session.user == "Guest") { var link_array = $('.nav-link').filter((i, elem) => $(elem).text().trim() === "My Profile"); link_array.length && $(link_array[0]).addClass("hide"); } -}) +}; + +const restrict_users_to_profile_page = () => { + if (frappe.session.user != "Guest") { + frappe.call({ + "method": "school.lms.doctype.lms_settings.lms_settings.check_profile_restriction", + "callback": (data) => { + if (data.message && data.message.redirect) { + window.location.href = `${data.message.prefix}${data.message.username}`; + } + } + }); + } +};