app/Resources/SonataUserBundle/views/Admin/Security/login.html.twig line 1

Open in your IDE?
  1. {% extends "::base.html.twig" %}
  2. {% set pageSpecialClass = 'login-page violet-theme colorful-theme' %}
  3. {% block stylesheets %}
  4.     {{ parent() }}
  5.     <link rel="stylesheet" href="/bundles/app/css/nouislider.css">
  6. {% endblock %}
  7. {% block body %}
  8.     {% set locale =  app.request.query.get('locale') ? app.request.query.get('locale') : app.request.locale %}
  9.     <div class="content-holder stars-box">
  10.         <div class="login-page-wrapper">
  11.             <div class="row-wrap">
  12.                 {# title #}
  13.                 <div class="home-title">
  14.                     <h3 class="text-center text_organization">
  15.                         {{- 'app.welcometext'|trans({}, 'app', locale) -}}
  16.                     </h3>
  17.                 </div>
  18.                 {# form #}
  19.                 <div class="login-box-body">
  20.                     {% block sonata_user_login_form %}
  21.                         {% block sonata_user_login_error %}
  22.                             {% if error %}
  23.                                 <div class="alert alert-error">
  24.                                     {{ 'app.login.invalid_credentials'|trans({}, 'app', locale) }}
  25.                                 </div>
  26.                             {% endif %}
  27.                         {% endblock %}
  28.                         {% if qrCodeUrl is defined %}
  29.                             <div class="row">
  30.                                 <div class="col-xs-12">
  31.                                     <p align="middle"><img src="{{ qrCodeUrl }}" alt="QR-code"></p>
  32.                                     <p align="middle">{{ 'qr_code_secret'|trans({}, 'SonataUserBundle') }}
  33.                                         : {{ qrSecret }}</p>
  34.                                     <p align="middle">
  35.                                         <a href="{{ path('sonata_admin_dashboard') }}">{{ 'qr_go_next'|trans({}, 'SonataUserBundle') }}</a>
  36.                                     </p>
  37.                                 </div>
  38.                             </div>
  39.                         {% elseif two_step_submit|default(false) %}
  40.                             <form method="POST" role="form">
  41.                                 {% if state == 'error' %}
  42.                                     <div class="alert alert-error">{{ 'label_two_step_code_error'|trans({}, 'SonataUserBundle') }}</div>
  43.                                 {% endif %}
  44.                                 <label for="_code">{{ 'label_two_step_code'|trans({}, 'SonataUserBundle') }}</label>
  45.                                 <div class="input-group input-group-lg">
  46.                                     <input type="text" class="form-control" id="_code" name="_code"
  47.                                            autocomplete='off'/>
  48.                                     <span class="input-group-btn">
  49.                         <input class="btn btn-primary"
  50.                                id="_submit"
  51.                                name="_submit"
  52.                                type="submit"
  53.                                value="{{ 'security.login.submit'|trans({}, 'FOSUserBundle', locale) }}"/>
  54.                     </span>
  55.                                 </div>
  56.                                 <span class="help-block sonata-ba-field-help">{{ 'message_two_step_code_help'|trans({}, 'SonataUserBundle') }}</span>
  57.                             </form>
  58.                         {% else %}
  59.                             <form action="{{ path("sonata_user_admin_security_check") }}" method="post" role="form">
  60.                                 <input type="hidden" name="_csrf_token" value="{{ csrf_token }}"/>
  61.                                 <div class="form-group has-feedback">
  62.                                 <span class="input-style white">
  63.                                     <input class="form-control"
  64.                                            id="username"
  65.                                            name="_username"
  66.                                            placeholder="{{ 'security.login.username'|trans({}, 'SonataUserBundle', locale) }}"
  67.                                            required="required"
  68.                                            type="text"
  69.                                            value="{{ last_username }}"/>
  70.                                 </span>
  71.                                 </div>
  72.                                 <div class="form-group has-feedback">
  73.                                 <span class="input-style white">
  74.                                     <input class="form-control"
  75.                                            id="password"
  76.                                            name="_password"
  77.                                            placeholder="{{ 'security.login.password'|trans({}, 'SonataUserBundle', locale) }}"
  78.                                            required="required"
  79.                                            type="password"/>
  80.                                 </span>
  81.                                 </div>
  82.                                 <div class="input-group">
  83.                                     <div class="checkbox">
  84.                                         <label>
  85.                                             <input type="checkbox" id="user_agreement" name="_user_agreement" value="on"
  86.                                                    required="required"/>
  87.                                             <svg xmlns="http://www.w3.org/2000/svg" width="24px" height="22px">
  88.                                                 <path
  89.                                                         d="M19.555,4.851c-2.854,3.489-5.464,7.175-8.546,10.471c-0.265,0.285-0.709,0.25-0.981,0c-3.239-2.981-4.049-4.698-4.048-4.698c-0.509-0.74,0.367-1.439,0.985-0.799c4.751,4.924,2.416,5.876,11.333-5.583C18.848,3.534,20.117,4.165,19.555,4.851z"/>
  90.                                             </svg>
  91.                                             <a onclick="showModalUserAgreement()"
  92.                                                style="cursor: pointer">  {{- 'app.login.user_agreement'|trans({}, 'app', locale) -}}</a>
  93.                                         </label>
  94.                                     </div>
  95.                                 </div>
  96.                                 <div class="buttons">
  97.                                     <button type="submit" id="btn_login_portal"
  98.                                             class="button white">{{ 'security.login.submit'|trans({}, 'FOSUserBundle', locale) }}</button>
  99.                                     <div class="checkbox">
  100.                                     <span>
  101.                                         <label>
  102.                                             <input type="checkbox" id="remember_me" name="_remember_me"
  103.                                                    value="on"/>
  104.                                             {{ 'security.login.remember_me'|trans({}, 'FOSUserBundle', locale) }}
  105.                                             <svg xmlns="http://www.w3.org/2000/svg" width="24px" height="22px"><path
  106.                                                         d="M19.555,4.851c-2.854,3.489-5.464,7.175-8.546,10.471c-0.265,0.285-0.709,0.25-0.981,0c-3.239-2.981-4.049-4.698-4.048-4.698c-0.509-0.74,0.367-1.439,0.985-0.799c4.751,4.924,2.416,5.876,11.333-5.583C18.848,3.534,20.117,4.165,19.555,4.851z"/></svg>
  107.                                         </label>
  108.                                     </span>
  109.                                     </div>
  110.                                 </div>
  111.                                 <input type="hidden" name="_locale" value="{{ locale }}">
  112.                             </form>
  113.                         {% endif %}
  114.                     {% endblock %}
  115.                 </div>
  116.                 {# forgot password #}
  117.                 <div class="forgot-password">
  118.                     <a href="{{ path('ms_user_reset_password',{'_locale': locale}) }}"
  119.                        class=""> {{- 'app.forgot_password.title'|trans({}, 'app', locale) -}}</a>
  120.                 </div>
  121.                 <div class="propose-wrap">
  122.                     <a onclick="addMessage(null, true, 'support')"
  123.                        style="cursor: pointer"> {{- 'app.login.cowork_propose'|trans({}, 'app', locale) -}}</a>
  124.                 </div>
  125.                 <div class="propose-wrap">
  126.                     <a href="https://abacusarithmetic.com/"
  127.                        style="cursor: pointer; font-size: 22px"> {{- 'app.login.about_the_project'|trans({}, 'app', locale) -}}</a>
  128.                 </div>
  129.             </div>
  130.             {# langs #}
  131.             <div class="langs">
  132.                 <span class="title">{{- 'app.login.choose_language'|trans({}, 'app', locale) -}}<span></span></span>
  133.                 <div class="list">
  134.                     {% for app_locale in app_locales|split('|') %}
  135.                         <a href="{{ path("sonata_user_admin_security_login",  {"locale" : app_locale }) }}"
  136.                            class="{{ app_locale }}{% if (locale == app_locale) %} active{% endif %}">{{ app_locale }}</a>
  137.                     {% endfor %}
  138.                 </div>
  139.             </div>
  140.             {# color theme #}
  141.             <div class="color-wrap">
  142.                 <span class="close"></span>
  143.                 <div class="color-box">
  144.                     {% if app.request.cookies.get('colorTheme') %}
  145.                         <div class="item violet">
  146.                             <div id="violet-color" style="width:50px;"
  147.                                  data-active="{{ app.request.cookies.get('colorTheme') == 'violet-theme' ? '1' : '0' }}"></div>
  148.                         </div>
  149.                         <div class="item blue">
  150.                             <div id="blue-color" style="width:50px;"
  151.                                  data-active="{{ app.request.cookies.get('colorTheme') == 'blue-theme' ? '1' : '0' }}"></div>
  152.                         </div>
  153.                         <div class="item green">
  154.                             <div id="green-color" style="width:50px;"
  155.                                  data-active="{{ app.request.cookies.get('colorTheme') == 'green-theme' ? '1' : '0' }}"></div>
  156.                         </div>
  157.                         <div class="item pink">
  158.                             <div id="pink-color" style="width:50px;"
  159.                                  data-active="{{ app.request.cookies.get('colorTheme') == 'pink-theme' ? '1' : '0' }}"></div>
  160.                         </div>
  161.                         <div class="item orange">
  162.                             <div id="orange-color" style="width:50px;"
  163.                                  data-active="{{ app.request.cookies.get('colorTheme') == 'orange-theme' ? '1' : '0' }}"></div>
  164.                         </div>
  165.                     {% else %}
  166.                         <div class="item violet">
  167.                             <div id="violet-color" style="width:50px;" data-active="1"></div>
  168.                         </div>
  169.                         <div class="item blue">
  170.                             <div id="blue-color" style="width:50px;" data-active="0"></div>
  171.                         </div>
  172.                         <div class="item green">
  173.                             <div id="green-color" style="width:50px;" data-active="0"></div>
  174.                         </div>
  175.                         <div class="item pink">
  176.                             <div id="pink-color" style="width:50px;" data-active="0"></div>
  177.                         </div>
  178.                         <div class="item orange">
  179.                             <div id="orange-color" style="width:50px;" data-active="0"></div>
  180.                         </div>
  181.                     {% endif %}
  182.                 </div>
  183.             </div>
  184.             <span class="theme-chooser"></span>
  185.         </div>
  186.         <div class="elements elements-login">
  187.             <img class="elem elem-1"
  188.                  src="/bundles/app/image/login/elem1{{ app.request.cookies.get('colorTheme') == 'pink-theme' ? '-pink' : '' }}.png"
  189.                  alt="">
  190.             <img class="elem elem-2" src="/bundles/app/image/login/elem2.png" alt="">
  191.             <img class="elem elem-3" src="/bundles/app/image/elems/elem3.svg" alt="">
  192.             <img class="elem elem-4" src="/bundles/app/image/elems/elem4.svg" alt="">
  193.             <img class="elem elem-5" src="/bundles/app/image/elems/elem5.svg" alt="">
  194.             <img class="elem elem-6" src="/bundles/app/image/elems/elem6.svg" alt="">
  195.             <img class="elem elem-7" src="/bundles/app/image/elems/elem7.svg" alt="">
  196.             <img class="elem elem-8" src="/bundles/app/image/elems/elem13.svg" alt="">
  197.         </div>
  198.         <div class="modal app-modal-send-message mt-3"
  199.              data-url={{ path('ms_app_cowork_propose', {'_locale' : locale}) }}></div>
  200.         <div class="modal app-modal-user_agreement  mt-3"> {%- embed 'AppBundle:Security:modal-user-agreement.html.twig' -%}{%- endembed -%}</div>
  201.         <script type="text/javascript" src="{{ asset('bundles/app/js/jquery.min.js') }}"></script>
  202.         <script>
  203.             if (sessionStorage.getItem('debtNoticeDismissed')) {
  204.                 sessionStorage.removeItem('debtNoticeDismissed');
  205.             }
  206.             window.addEventListener && window.addEventListener('load', function () {
  207.                 $('body').addClass('loaded');
  208.             });
  209.             function showModalUserAgreement() {
  210.                 var self = this;
  211.                 var section = $('.app-modal-user_agreement');
  212.                 $('.app-modal-send-message').hide();
  213.                 var popupWindow = $('.app-modal-user_agreement');
  214.                 section.modal('show');
  215.                 popupWindow.removeClass('loading');
  216.             };
  217.             function acceptUserAgreement() {
  218.                 $("#user_agreement").prop("checked", true);
  219.                 $("#user_agreement").attr('checked', 'checked');
  220.                 var section = $('.app-modal-user_agreement');
  221.                 section.modal('hide');
  222.             }
  223.             function declineUserAgreement() {
  224.                 $("#user_agreement").prop("checked", false);
  225.                 $("#user_agreement").removeAttr('checked');
  226.                 var section = $('.app-modal-user_agreement');
  227.                 section.modal('hide');
  228.             }
  229.             (function () {
  230.                 /*$("#user_agreement").change(function() {
  231.                     if($(this).prop('checked')) {
  232.                         $('#btn_login_portal').prop('disabled', false);
  233.                     } else {
  234.                         $('#btn_login_portal').prop('disabled', true);
  235.                     }
  236.                 });*/
  237.                 $(document).ready(function () {
  238.                     openListLang();
  239.                     openThemeChooser();
  240.                 });
  241.                 function openListLang() {
  242.                     var button = $('.langs .title'),
  243.                         list = $('.langs .list');
  244.                     button.on('click', function () {
  245.                         $(this).parents('.langs').toggleClass('active');
  246.                     })
  247.                 }
  248.                 function openThemeChooser() {
  249.                     var button = $('.theme-chooser'),
  250.                         close = $('.color-wrap .close'),
  251.                         wrapper = $('.color-wrap');
  252.                     button.on('click', function () {
  253.                         wrapper.addClass('active');
  254.                     });
  255.                     close.on('click', function () {
  256.                         wrapper.removeClass('active');
  257.                     });
  258.                 }
  259.             })();
  260.         </script>
  261.         <script type="text/javascript" src="{{ asset('bundles/app/js/vendor/wNumb.js') }}"></script>
  262.         <script type="text/javascript" src="{{ asset('bundles/app/js/vendor/nouislider.min.js') }}"></script>
  263.         <script src="/bundles/sonatacore/vendor/bootstrap/dist/js/bootstrap.min.js"></script>
  264.         <script src="/bundles/sonatacore/vendor/select2/select2.min.js"></script>
  265.         <script type="text/javascript" src="{{ asset('/bundles/app/js/notification.js') }}"></script>
  266.         <script type="text/javascript" src="{{ asset('/bundles/app/js/animation.js?34522223233') }}"></script>
  267.         <script>
  268.             $(document).ready(function () {
  269.                 var wrapper = $('body');
  270.                 // violet
  271.                 var themeViolet = document.getElementById('violet-color'),
  272.                     inputThemeViolet = $('input[value="violet"]');
  273.                 noUiSlider.create(themeViolet, {
  274.                     start: themeViolet.getAttribute('data-active'),
  275.                     connect: [true, false],
  276.                     range: {'min': [0, 1], 'max': 1},
  277.                     format: wNumb({decimals: 0})
  278.                 });
  279.                 // blue
  280.                 var themeBlue = document.getElementById('blue-color'),
  281.                     inputThemeBlue = $('input[value="blue"]');
  282.                 noUiSlider.create(themeBlue, {
  283.                     start: themeBlue.getAttribute('data-active'),
  284.                     connect: [true, false],
  285.                     range: {'min': [0, 1], 'max': 1},
  286.                     format: wNumb({decimals: 0})
  287.                 });
  288.                 // green
  289.                 var themeGreen = document.getElementById('green-color'),
  290.                     inputThemeGreen = $('input[value="green"]');
  291.                 noUiSlider.create(themeGreen, {
  292.                     start: themeGreen.getAttribute('data-active'),
  293.                     connect: [true, false],
  294.                     range: {'min': [0, 1], 'max': 1},
  295.                     format: wNumb({decimals: 0})
  296.                 });
  297.                 // pink
  298.                 var themePink = document.getElementById('pink-color'),
  299.                     inputThemePink = $('input[value="pink"]');
  300.                 noUiSlider.create(themePink, {
  301.                     start: themePink.getAttribute('data-active'),
  302.                     connect: [true, false],
  303.                     range: {'min': [0, 1], 'max': 1},
  304.                     format: wNumb({decimals: 0})
  305.                 });
  306.                 // orange
  307.                 var themeOrange = document.getElementById('orange-color'),
  308.                     inputThemeOrange = $('input[value="orange"]');
  309.                 noUiSlider.create(themeOrange, {
  310.                     start: themeOrange.getAttribute('data-active'),
  311.                     connect: [true, false],
  312.                     range: {'min': [0, 1], 'max': 1},
  313.                     format: wNumb({decimals: 0})
  314.                 });
  315.                 // violet
  316.                 themeViolet.noUiSlider.on('update', function (values, handle) {
  317.                     if (values[handle] === '1') {
  318.                         inputThemeViolet.trigger('click');
  319.                         wrapper.removeClass('blue-theme green-theme pink-theme orange-theme');
  320.                         wrapper.addClass('violet-theme');
  321.                         document.cookie = "colorTheme=violet-theme; path=/";
  322.                         themeBlue.noUiSlider.set([0, null]);
  323.                         themeGreen.noUiSlider.set([0, null]);
  324.                         themeOrange.noUiSlider.set([0, null]);
  325.                         themePink.noUiSlider.set([0, null]);
  326.                     }
  327.                 });
  328.                 // blue
  329.                 themeBlue.noUiSlider.on('update', function (values, handle) {
  330.                     if (values[handle] === '1') {
  331.                         inputThemeBlue.trigger('click');
  332.                         wrapper.removeClass('violet-theme green-theme pink-theme orange-theme');
  333.                         wrapper.addClass('blue-theme');
  334.                         document.cookie = "colorTheme=blue-theme; path=/";
  335.                         themeGreen.noUiSlider.set([0, null]);
  336.                         themeOrange.noUiSlider.set([0, null]);
  337.                         themePink.noUiSlider.set([0, null]);
  338.                         themeViolet.noUiSlider.set([0, null]);
  339.                     }
  340.                 });
  341.                 // green
  342.                 themeGreen.noUiSlider.on('update', function (values, handle) {
  343.                     if (values[handle] === '1') {
  344.                         inputThemeGreen.trigger('click');
  345.                         wrapper.removeClass('blue-theme violet-theme pink-theme orange-theme');
  346.                         wrapper.addClass('green-theme');
  347.                         document.cookie = "colorTheme=green-theme; path=/";
  348.                         themeBlue.noUiSlider.set([0, null]);
  349.                         themeOrange.noUiSlider.set([0, null]);
  350.                         themePink.noUiSlider.set([0, null]);
  351.                         themeViolet.noUiSlider.set([0, null]);
  352.                     }
  353.                 });
  354.                 // pink
  355.                 themePink.noUiSlider.on('update', function (values, handle) {
  356.                     if (values[handle] === '1') {
  357.                         inputThemePink.trigger('click');
  358.                         wrapper.removeClass('blue-theme green-theme violet-theme orange-theme');
  359.                         wrapper.addClass('pink-theme');
  360.                         document.cookie = "colorTheme=pink-theme; path=/";
  361.                         themeBlue.noUiSlider.set([0, null]);
  362.                         themeGreen.noUiSlider.set([0, null]);
  363.                         themeOrange.noUiSlider.set([0, null]);
  364.                         themeViolet.noUiSlider.set([0, null]);
  365.                     }
  366.                 });
  367.                 // orange
  368.                 themeOrange.noUiSlider.on('update', function (values, handle) {
  369.                     if (values[handle] === '1') {
  370.                         inputThemeOrange.trigger('click');
  371.                         wrapper.removeClass('blue-theme green-theme pink-theme violet-theme');
  372.                         wrapper.addClass('orange-theme');
  373.                         document.cookie = "colorTheme=orange-theme; path=/";
  374.                         themeBlue.noUiSlider.set([0, null]);
  375.                         themeGreen.noUiSlider.set([0, null]);
  376.                         themePink.noUiSlider.set([0, null]);
  377.                         themeViolet.noUiSlider.set([0, null]);
  378.                     }
  379.                 });
  380.             });
  381.         </script>
  382.         <div class="copyright" align="center"> {{- 'app.copyright'|trans({}, 'app', locale) -}} </div>
  383.     </div>
  384. {% endblock %}