templates/index.html (237 lines of code) (raw):

<!DOCTYPE html> <html lang="en"> {% block head %} <head> <meta charset="UTF-8"> <link href="/static/favicon.png" rel="icon"> <link href="/static/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <link href="/static/css/typeaheadjs.css" rel="stylesheet"> <style> .panel { border: 0; box-shadow: none; } </style> <title>GateKeeper</title> </head> {% endblock %} <body> {% include "navbar.html" %} {% block options %} <div class="panel panel-default"> <div class="panel-heading"> <form class="form-inline" id="user-id-form" method="post" action="/"> <div class="form-group" id="ldap-users"> {{ form.csrf_token }} {{ form.USER_ID(class_="form-control typeahead", placeholder="Enter LDAP user name", size=40) }} </div> </form> </div> <div class="panel-body"> <div> {% with messages = get_flashed_messages() %} {% if messages %} <ul class=flashes> {% for message in messages %} <p class="text-warning">{{ message }}</p> {% endfor %} </ul> {% endif %} {% endwith %} </div> <form class="form-inline" id="offboard-form" method="post" action="/offboard"> <table class="table table-condensed"> <tr> <td class="col-md-4"> <dl id="formOptions"> {{ form.csrf_token }} <div> <input type="checkbox" id="select-all"> <label for="select-all">Perform ALL actions</label> </div> <br> <br> <p><strong>Google Directory</strong></p> {% for field in form if field.name in google_admin_actions %} {{ field(class_="checkbox") }} {{ field.label }} <br> {% endfor %} <br> <p><strong>Google Gmail</strong></p> {% for field in form if field.name in google_gmail_actions %} {% if field.name == "SET_OOO_MSG" %} <input class="checkbox" id="SET_OOO_MSG" name="SET_OOO_MSG" type="checkbox" value="y" data-toggle="collapse" data-target="#set_ooo_msg_options" aria-expanded="false" aria-controls="set_ooo_msg_options"> <label for="SET_OOO_MSG">Set Out Of Office message</label> <div class="collapse" id="set_ooo_msg_options"> <div class="form-group" id="ooo-msg-text"> {{ form.OOO_MSG_TEXT.label }} <br> {{ form.OOO_MSG_TEXT(class_="form-control", rows="4", cols="40", placeholder="Out Of Office Response") }} </div> </div> {% else %} {{ field(class_="checkbox") }} {{ field.label }} {% endif %} <br> {% endfor %} <br> <p><strong>Google Calendar</strong></p> {% for field in form if field.name in google_calendar_actions %} {% if field.name == "CHANGE_EVENTS_OWNERSHIP" %} <input class="checkbox" id="CHANGE_EVENTS_OWNERSHIP" name="CHANGE_EVENTS_OWNERSHIP" type="checkbox" value="y" data-toggle="collapse" data-target="#change_events_ownership_options" aria-expanded="false" aria-controls="change_events_ownership_options"> <label for="change_events_ownership">Change events ownership</label> <div class="collapse" id="change_events_ownership_options"> <div class="form-group" id="gcal-new-owner-user-id"> {{ form.GCAL_NEW_OWNER.label }} {{ form.GCAL_NEW_OWNER(class_="form-control typeahead", size=20) }} </div> </div> {% else %} {{ field(class_="checkbox") }} {{ field.label }} {% endif %} <br> {% endfor %} <br> <p><strong>PagerDuty</strong></p> {% for field in form if field.name in pagerduty_actions %} {{ field(class_="checkbox") }} {{ field.label }} <br> {% endfor %} <br> <p><strong>DUO Secure</strong></p> {% for field in form if field.name in duo_actions %} {{ field(class_="checkbox") }} {{ field.label }} <br> {% endfor %} </dl> </td> <td class="col-md-8"> <div class="panel panel-primary" style="height: 500px;"> {% if user_info %} <div class="row"> <div class="col-md-10"> <div class="row"> <div class="col-md-3"><strong>Name:</strong></div> <div class="col-md-9">{{ user_info[ldap_fields['full_name']] }}</div> </div> <div class="row"> <div class="col-md-3"><strong>Role:</strong></div> <div class="col-md-9">{{ user_info[ldap_fields['role']] }}</div> </div> <div class="row"> <div class="col-md-3"><strong>Team:</strong></div> <div class="col-md-9">{{ user_info[ldap_fields['team']] }}</div> </div> <div class="row"> <div class="col-md-3"><strong>Org:</strong></div> <div class="col-md-9">{{ user_info[ldap_fields['org']] }}</div> </div> <div class="row"> <div class="col-md-3"><strong>Location:</strong></div> <div class="col-md-9">{{ user_info[ldap_fields['location']] }}</div> </div> <div class="row"> <div class="col-md-3"><strong>Start date:</strong></div> <div class="col-md-9">{{ user_info[ldap_fields['start_date']] }}</div> </div> <div class="row"> <div class="col-md-3"><strong>LDAP UID:</strong></div> <div class="col-md-9">{{ user_info[ldap_fields['uid_number']] }}</div> </div> <div class="row"> <div class="col-md-3"><strong>LDAP groups:</strong></div> <div class="col-md-9"> {% for group in user_info[ldap_fields['groups']] %}{{ group }} {% endfor %} </div> </div> <div class="row"> <div class="col-md-3"><strong>Status:</strong></div> <div class="col-md-9"> {% if user_info['active'] == true %} <span class="text-info">ACTIVE</span> {% else %} <span class="text-danger">INACTIVE</span> {% endif %} </div> </div> </div> {% if user_info[ldap_fields['photo_url']] %} <div class="col-md-2"> <img src="data:image/jpg; base64, {{ user_info[ldap_fields['photo_url']][0] }}" class="img-circle" width="100" height="100"> </div> {% endif %} </div> <br> <br> <div class="row"> <div class="col-md-12 text-center" id="data"> Click to submit changes for {{ user_info[ldap_fields['first_name']][0] }}. <button class="btn btn-default" id="button" type="submit">Submit</button> </div> </div> {% endif %} </div> </td> </tr> </table> </form> </div> <div class="panel-footer"> <div class="progress"> <div class="progress-bar progress-bar-info progress-bar-striped active" id="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div> </div> </div> </div> {% endblock %} <script src="/static/bower_components/jquery/dist/jquery.min.js"></script> <script src="/static/bower_components/bootstrap/dist/js/bootstrap.min.js"></script> <script src="/static/bower_components/typeahead.js/dist/typeahead.bundle.min.js"></script> <script src="/static/js/gatekeeper.js"></script> <script type="text/javascript"> {% block ldap_users %} var users = {{ users|safe }}; $("#gcal_new_owner").val("{{user_info[ldap_fields['manager']]}}"); {% endblock %} typeaheadRun("#ldap-users", "users", users); typeaheadRun("#gcal-new-owner-user-id", "users", users); typeaheadSubmitFormOnSelect("#ldap-users", "#user-id-form"); disableEnterKey("#offboard-form"); selectAllCheckboxes("#select-all", "#formOptions"); var checkboxes = ["RESET_PASSWORD", "DELETE_ASPS", "DELETE_TOKENS", "ORG_UNIT_CHANGE", "INVALIDATE_BACKUP_CODES", "DISABLE_IMAP", "DISABLE_POP", "REMOVE_FUTURE_EVENTS", "REMOVE_FROM_ONCALLS", "REMOVE_FROM_DUO"]; selectDefaultCheckboxes(checkboxes); {% block offboard %} var userId = "{{ form['USER_ID'].data }}"; var user = "{{ user }}"; var timeStamp = (new Date).getTime(); var sessionId = timeStamp + "_" + user + "_" + userId; $("#offboard-form").submit(function(e) { e.preventDefault(); $.ajax({ url: $(this).attr("action") + "/" + sessionId, type: 'POST', data: $(this).serialize() + "&USER_ID=" + userId }); var progressData = "Performing changes for " + userId + "...<br><br>"; $("#data").html(progressData); var progress = 0; progressBar("#progress-bar", "#progress", progress); var items = $('input[class="checkbox"]:checked').length; var step = (100.0 / items); var source = new EventSource('/offboard/' + sessionId); source.onmessage = function(e) { progress += step; progressData += e.data; $("#data").html(progressData); progressBar("#progress-bar", "#progress", progress); if (progress >= 100) { source.close(); progressData += "<br>Done!"; $("#data").html(progressData); } }; }); {% endblock %} </script> </body> </html>