UPD 1
- add all AppSidebar links that used - add singup form
This commit is contained in:
+15
-10
@@ -1,9 +1,9 @@
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.naming import append_number_if_name_exists
|
||||
from frappe.utils import escape_html, random_string
|
||||
from frappe.website.utils import cleanup_page_name, is_signup_disabled
|
||||
|
||||
from frappe.website.utils import cleanup_page_name
|
||||
from frappe.website.utils import is_signup_disabled
|
||||
from frappe.utils import random_string, escape_html
|
||||
from lms.lms.utils import get_country_code
|
||||
|
||||
|
||||
@@ -19,12 +19,12 @@ def validate_username_duplicates(doc, method):
|
||||
doc.username = doc.email.replace("@", "").replace(".", "")
|
||||
|
||||
|
||||
def after_insert(doc, method):
|
||||
doc.add_roles("LMS Student")
|
||||
'''def after_insert(doc, method):
|
||||
doc.add_roles("LMS Student")'''
|
||||
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def sign_up(email, full_name, verify_terms, user_category):
|
||||
def sign_up(email, full_name, verify_terms, user_category, user_role, phone):
|
||||
if is_signup_disabled():
|
||||
frappe.throw(_("Sign Up is disabled"), _("Not Allowed"))
|
||||
|
||||
@@ -48,6 +48,7 @@ def sign_up(email, full_name, verify_terms, user_category):
|
||||
{
|
||||
"doctype": "User",
|
||||
"email": email,
|
||||
"phone": escape_html(phone),
|
||||
"first_name": escape_html(full_name),
|
||||
"verify_terms": verify_terms,
|
||||
"user_category": user_category,
|
||||
@@ -62,11 +63,15 @@ def sign_up(email, full_name, verify_terms, user_category):
|
||||
user.insert()
|
||||
|
||||
# set default signup role as per Portal Settings
|
||||
default_role = frappe.db.get_single_value("Portal Settings", "default_role")
|
||||
default_role = frappe.db.get_value("Portal Settings", None, "default_role")
|
||||
if default_role:
|
||||
user.add_roles(default_role)
|
||||
elif user_role: # set Role
|
||||
user.add_roles(user_role) # Если роль передана, добавляем её
|
||||
else:
|
||||
user.add_roles("LMS Student") # Иначе добавляем роль по умолчанию
|
||||
|
||||
user.add_roles("LMS Student")
|
||||
#user.add_roles("LMS Student")
|
||||
set_country_from_ip(None, user.name)
|
||||
|
||||
if user.flags.email_sent:
|
||||
@@ -79,8 +84,8 @@ def set_country_from_ip(login_manager=None, user=None):
|
||||
if not user and login_manager:
|
||||
user = login_manager.user
|
||||
user_country = frappe.db.get_value("User", user, "country")
|
||||
if user_country:
|
||||
return
|
||||
# if user_country:
|
||||
# return
|
||||
frappe.db.set_value("User", user, "country", get_country_code())
|
||||
return
|
||||
|
||||
|
||||
@@ -11,21 +11,24 @@
|
||||
<input type="email" id="signup_email" class="form-control"
|
||||
placeholder="{{ _('jane@example.com') }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label sr-only" for="signup_phone"> {{ _("Phone") }} </label>
|
||||
<input type="phone" id="signup_phone" class="form-control"
|
||||
placeholder="{{ _('+79990009900') }}" required>
|
||||
</div>
|
||||
|
||||
{% if frappe.db.get_single_value("LMS Settings", "user_category") %}
|
||||
<div class="form-group">
|
||||
<label class="form-label sr-only"> {{ _("User Category") }} </label>
|
||||
<label class="form-label sr-only"> {{ _("Role") }} </label>
|
||||
<div class="control-input-wrapper">
|
||||
<div class="control-input flex align-center">
|
||||
<select type="text" id="user_category" data-fieldname="user_category" style="color: var(--text-light)"
|
||||
<select type="text" id="user_role" data-fieldname="user_role" style="color: var(--text-muted)"
|
||||
class="input-with-feedback form-control ellipsis" data-fieldtype="Select" required>
|
||||
<option value=""> {{ _("Category") }} </option>
|
||||
<option value="Business Owner"> {{ _("Business Owner") }} </option>
|
||||
<option value="Manager (Sales/Marketing/Customer)"> {{ _("Manager (Sales/Marketing/Customer)") }} </option>
|
||||
<option value="Employee"> {{ _("Employee") }} </option>
|
||||
<option value="Student"> {{ _("Student") }} </option>
|
||||
<option value="Freelancer/Just looking"> {{ _("Freelancer/Just looking") }} </option>
|
||||
<option value="Others"> {{ _("Others") }} </option>
|
||||
<option value=""> {{ _("Role") }} </option>
|
||||
<option value="LMS Student"> {{ _("Student") }} </option>
|
||||
<option value="LMS Schoolchild"> {{ _("Ученик 11 класса") }} </option>
|
||||
<option value="Course Creator"> {{ _("Учитель/Репетитор") }} </option>
|
||||
<option value="Parent"> {{ _("Parent") }} </option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -48,6 +51,9 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<p style="font-size: 12px;">
|
||||
{{ _("Проверьте почту — там письмо для подтверждения регистрации. Если его нет во «Входящих», проверьте «Спам».") }}
|
||||
</p>
|
||||
<div class="page-card-actions">
|
||||
<button class="btn btn-sm btn-primary btn-block btn-signup"
|
||||
type="submit">{{ _("Sign up") }}</button>
|
||||
@@ -78,22 +84,30 @@
|
||||
e.preventDefault();
|
||||
const email = ($("#signup_email").val() || "").trim();
|
||||
const full_name = frappe.utils.xss_sanitise(($("#signup_fullname").val() || "").trim());
|
||||
const phone = ($("#signup_phone").val() || "").trim();
|
||||
|
||||
if (!email || !validate_email(email) || !full_name) {
|
||||
login.set_status('{{ _("Valid email and name required") }}', 'red');
|
||||
if (!email || !validate_email(email) || !full_name || !validate_phone(phone)) {
|
||||
login.set_status('{{ _("Valid email, name, and phone required") }}', 'red');
|
||||
return false;
|
||||
}
|
||||
|
||||
frappe.call({
|
||||
method: "lms.lms.user.sign_up",
|
||||
method: "lms.overrides.user.sign_up",
|
||||
args: {
|
||||
"email": email,
|
||||
"full_name": full_name,
|
||||
"phone": phone,
|
||||
"verify_terms": $("#signup-terms").prop("checked") ? 1 : 0,
|
||||
"user_category": $("#user_category").length ? $("#user_category").val() : ""
|
||||
"user_category": $("#user_category").length ? $("#user_category").val() : "",
|
||||
"user_role": $("#user_role").length ? $("#user_role").val() : ""
|
||||
},
|
||||
statusCode: login.login_handlers
|
||||
})
|
||||
return false;
|
||||
}
|
||||
|
||||
const validate_phone = (phone) => {
|
||||
const phone_regex = /^[0-9\-\+\s]{10,15}$/;
|
||||
return phone_regex.test(phone);
|
||||
}
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user