<div class="mui-container">
<div class="mui-panel">
%= form_for $target => (class => 'mui-form') => begin
<div class="mui-textfield">
% my $name_title = 'Полето „Име за вход“ може да съдържа от 4 до 12 букви, цифри и знаците „.“,„-“ и „$“';
%= text_field 'login_name', placeholder => $name_title,title=> $name_title
%= label_for login_name =>'Име за вход', title => $name_title
</div>
% my $l_p_title = 'Създайте случаен таен ключ, като използвате бутона (+).';
<div class="mui-textfield">
<button id="generate_pass"
class ="mui-btn mui-btn--small mui-btn--primary mui-btn--fab"
title="Нов таен ключ" style="float:right;font-weight:700">+</button>
<%=
text_field login_password => (
readonly => '',
required => '',
size => 40,
title => $l_p_title,
placeholder => $l_p_title,
style =>'width:92%'
)
%>
%= label_for login_password =>'Таен ключ за вход', title => $l_p_title
</div>
<div class="mui-textfield">
%= text_field first_name => required => 1, size => 40
%= label_for first_name =>'Име'
</div>
<div class="mui-textfield">
%= text_field last_name => required => 1, size => 40
%= label_for last_name =>'Фамилия'
</div>
<div class="mui-textfield">
%= text_field email => required => 1, size => 40
%= label_for email =>'Е-поща'
</div>
<div class="mui-textfield">
%= text_field description =>size => 65, class => 'mui--is-empty mui--is-untouched mui--is-pristine'
%= label_for description =>'Описание'
</div>
%= select_box disabled => [['Не'=>1],['Да'=>0]], label =>'Действащ'
<div class="mui-textfield">
%= number_field 'start_date'
%= label_for start_date => 'Start_date'
</div>
<div class="mui-textfield">
%= number_field 'stop_date'
%= label_for stop_date => 'Stop_date'
</div>
% if($target eq 'update_users' && stash->{id}) {
<%
my $groups = groups->all_with_member(stash->{id});
my $is_admin = !!groups->is_admin($user->{id});
$groups = $groups->map(sub {
return [
$_->{name} => $_->{id},
$_->{is_member} ? (checked => undef) : (),
!$is_admin || ($_->{id} == $user->{group_id}) ? (disabled => '') : ()];
});
%>
<%= checkboxes(groups => $groups, label =>'Множества') %>
<div class="mui-textfield">
%= label_for group_id => 'Главно множество'
<b><%= groups->find_where({id => $users->{group_id}})->{name} %></b>
%= hidden_field group_id => $users->{group_id}
</div>
% }
<%= input_tag cancel => 'Отказъ',
(type=>'reset', class => 'mui-btn mui-btn--secondary', style => 'float :right;') %>
% my $button_txt = $caption eq 'Create' ? 'Създаване':'Записъ';
%= submit_button $button_txt => (class => 'mui-btn mui-btn--raised mui-btn--primary')
% end
<script>
let same_user = <%=
($user->{id} == ($users->{id} || 0)) ? 'true' : 'false'
%>;
let form_target = '<%= $target %>';
</script>
%= javascript '/js/CryptoJS-v3.1.2/sha1.js'
%= javascript begin
"use strict";
function generate_password(e) {
e.preventDefault();
const name_field = $('[name="login_name"]');
const passw_field = $('[name="login_password"]');
if (name_field.val() === "") {
alert(
"Моля, въведете име за потребителя," +
" преди да създадете тайния ключ за вход" +
" и не го променяйте след това."
);
return false;
}
let length = 8;
let charset =
"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯ" +
"абвгдежзийклмнопрстуфхцчшщъьюя" +
"1234567890!@#$%^&*()_+-=[];:,.~/<>";
let pass = "";
for (let i = 0, n = charset.length; i < length; ++i) {
pass += charset.charAt(Math.floor(Math.random() * n));
}
if (same_user) {
pass = prompt(
`Новият таен ключ за вход е "${pass}" без ограждащите кавички. ` +
"Състои се от букви от българската азбука, числа и печатаеми знаци. " +
"Можете да го промените, но го запомнете, защото няма да го видите повече.",
pass
);
if (Boolean(pass)) passw_field.val(pass);
else return;
} else {
let change_pass =
form_target === "update_users"
? confirm(
"Наистина ли искате да промените тайната дума за вход на " +
$('[name="login_name"]').val() +
"?"
)
: true;
if (Boolean(change_pass)) passw_field.val(pass);
else return;
}
const concat_ln_lp = name_field.val() + passw_field.val();
const passw_sha1 = CryptoJS.SHA1(concat_ln_lp);
passw_field.val(passw_sha1);
return;
}
$("#generate_pass").click(generate_password);
% end
</div>
</div>