{% extends 'base.html' %}
{% load static %}
{% load i18n %}

{% block custom_head_css_js %}
    <link href="{% static 'css/plugins/select2/select2.min.css' %}" rel="stylesheet">
    <link href="{% static "css/plugins/sweetalert/sweetalert.css" %}" rel="stylesheet">
    <script src="{% static 'js/plugins/select2/select2.full.min.js' %}"></script>
    <script src="{% static "js/plugins/sweetalert/sweetalert.min.js" %}"></script>
    <script src="{% static "js/vue.min.js" %}"></script>
{% endblock %}
{% block content %}
    <div class="wrapper wrapper-content animated fadeInRight">
        <div class="row">
            <div class="col-sm-12">
                <div class="ibox float-e-margins">
                    <div class="panel-options">
                        <ul class="nav nav-tabs">
                            <li class="active">
                                <a href="{% url 'users:user-detail' pk=user_object.id %}" class="text-center"><i class="fa fa-laptop"></i> {% trans 'User detail' %} </a>
                            </li>
                            <li>
                                <a href="{% url 'users:user-granted-asset' pk=user_object.id %}" class="text-center"><i class="fa fa-cubes"></i> {% trans 'Asset granted' %}</a>
                            </li>
                            <li class="pull-right">
                                <a class="btn btn-outline {% if can_update %} btn-default {% else %} disabled {% endif %}" href="{% url 'users:user-update' pk=user_object.id %}"><i class="fa fa-edit"></i>{% trans 'Update' %}</a>
                            </li>

                            <li class="pull-right">
                                <a class="btn btn-outline {% if can_delete %} btn-danger btn-delete-user {% else %} disabled {% endif %}">
                                    <i class="fa fa-trash-o"></i>{% trans 'Delete' %}
                                </a>
                            </li>
                        </ul>
                    </div>
                    <div class="tab-content">
                        <div class="col-sm-8" style="padding-left: 0">
                            <div class="ibox float-e-margins">
                                <div class="ibox-title">
                                    <span class="label"><b>{{ user_object.name }}</b></span>
                                    <div class="ibox-tools">
                                        <a class="collapse-link">
                                            <i class="fa fa-chevron-up"></i>
                                        </a>
                                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                                            <i class="fa fa-wrench"></i>
                                        </a>
                                        <ul class="dropdown-menu dropdown-user">
                                        </ul>
                                        <a class="close-link">
                                            <i class="fa fa-times"></i>
                                        </a>
                                    </div>
                                </div>
                                <div class="ibox-content">
                                    <table class="table">
                                        <tbody>
                                        <tr class="no-borders-tr">
                                            <td colspan="2">
                                                <img src="{{ user_object.avatar_url }}" class="img-circle" width="64" height="64">
                                            </td>
                                        </tr>
                                        <tr>
                                            <td width="20%">{% trans 'Name' %}:</td>
                                            <td><b>{{ user_object.name }}</b></td>
                                        </tr>
                                        <tr>
                                            <td>{% trans 'Username' %}:</td>
                                            <td><b>{{ user_object.username }}</b></td>
                                        </tr>
                                        <tr>
                                            <td>{% trans 'Email' %}:</td>
                                            <td><b>{{ user_object.email }}</b></td>
                                        </tr>
                                        {% if user.phone %}
                                            <tr>
                                                <td>{% trans 'Phone' %}:</td>
                                                <td><b>{{ user_object.phone }}</b></td>
                                            </tr>
                                        {% endif %}
                                        {% if user_object.wechat %}
                                            <tr>
                                                <td>{% trans 'Wechat' %}:</td>
                                                <td><b>{{ user_object.wechat }}</b></td>
                                            </tr>
                                        {% endif %}
                                        <tr>
                                            <td>{% trans 'Role' %}:</td>
                                            <td><b>{{ user_object.role_display }}</b></td>
                                        </tr>
                                        <tr>
                                            <td>{% trans 'MFA certification' %}:</td>
                                            <td><b>
                                                {% if user_object.otp_force_enabled %}
                                                    {% trans 'Force enabled' %}
                                                {% elif  user_object.otp_enabled%}
                                                    {% trans 'Enabled' %}
                                                {% else %}
                                                    {% trans 'Disabled' %}
                                                {% endif %}
                                            </b></td>
                                        </tr>
                                        <tr>
                                            <td>{% trans 'Source' %}:</td>
                                            <td><b>{{ user_object.get_source_display }}</b></td>
                                        </tr>
                                        <tr>
                                            <td>{% trans 'Date expired' %}:</td>
                                            <td><b>{{ user_object.date_expired|date:"Y-m-j H:i:s" }}</b></td>
                                        </tr>
                                        <tr>
                                            <td>{% trans 'Created by' %}:</td>
                                            <td><b>{{ user_object.created_by }}</b></td>
                                        </tr>
                                        <tr>
                                            <td>{% trans 'Date joined' %}:</td>
                                            <td><b>{{ user_object.date_joined|date:"Y-m-j H:i:s" }}</b></td>
                                        </tr>
                                        <tr>
                                            <td>{% trans 'Last login' %}:</td>
                                            <td><b>{{ user_object.last_login|date:"Y-m-j H:i:s" }}</b></td>
                                        </tr>
                                        {% if user_object.can_update_password %}
                                        <tr>
                                            <td>{% trans 'Last password updated' %}:</td>
                                            <td><b>{{ user_object.date_password_last_updated|date:"Y-m-j H:i:s" }}</b></td>
                                        </tr>
                                        {% endif %}
                                        <tr>
                                            <td>{% trans 'Comment' %}:</td>
                                            <td><b>{{ user_object.comment }}</b></td>
                                        </tr>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </div>
                        <div class="col-sm-4" style="padding-left: 0;padding-right: 0">
                            <div class="panel panel-primary">
                                <div class="panel-heading">
                                    <i class="fa fa-info-circle"></i> {% trans 'Quick modify' %}
                                </div>
                                <div class="panel-body">
                                    <table class="table">
                                        <tbody>
                                        <tr class="no-borders-tr">
                                          <td width="50%">{% trans 'Active' %}:</td>
                                            <td><span class="pull-right">
                                                <div class="switch">
                                                    <div class="onoffswitch">
                                                        <input type="checkbox" {% if user_object.is_active %} checked {% endif %} {% if request.user == user_object %} disabled {% endif %} class="onoffswitch-checkbox" id="is_active">
                                                        <label class="onoffswitch-label" for="is_active">
                                                            <span class="onoffswitch-inner"></span>
                                                            <span class="onoffswitch-switch"></span>
                                                        </label>
                                                    </div>
                                                </div>
                                            </span></td>
                                        </tr>
                                        <tr>
                                          <td>{% trans 'Force enabled MFA' %}:</td>
                                            <td><span class="pull-right">
                                                <div class="switch">
                                                    <div class="onoffswitch">
                                                        <input type="checkbox" class="onoffswitch-checkbox" {% if user_object.otp_force_enabled %} checked {% endif %}
                                                               id="force_enable_otp">
                                                        <label class="onoffswitch-label" for="force_enable_otp">
                                                            <span class="onoffswitch-inner"></span>
                                                            <span class="onoffswitch-switch"></span>
                                                        </label>
                                                    </div>
                                                </div>
                                            </span></td>
                                        </tr>
                                        <tr>
                                            <td>{% trans 'Reset MFA' %}:</td>
                                            <td>
                                                <span class="pull-right">
                                                    <button type="button" class="btn btn-primary btn-xs" id="btn-reset-mfa" style="width: 54px">{% trans 'Reset' %}</button>
                                                </span>
                                            </td>
                                        </tr>
                                        {% if user_object.can_update_password %}
                                        <tr>
                                            <td>{% trans 'Send reset password mail' %}:</td>
                                            <td>
                                                <span class="pull-right">
                                                    <button type="button" class="btn btn-primary btn-xs" {% if request.user == user_object %} disabled="disabled" {% endif %} id="btn-reset-password" style="width: 54px">{% trans 'Send' %}</button>
                                                </span>
                                            </td>
                                        </tr>
                                        {% endif %}
                                        {% if user_object.can_update_ssh_key %}
                                        <tr>
                                            <td>{% trans 'Send reset ssh key mail' %}:</td>
                                            <td>
                                                <span class="pull-right">
                                                    <button type="button" class="btn btn-primary btn-xs" {% if request.user == user_object %} disabled="disabled" {% endif %} id="btn-reset-pk" style="width: 54px;">{% trans 'Send' %}</button>
                                                </span>
                                            </td>
                                        </tr>
                                        {% endif %}
                                        <tr style="{% if not unblock %}display:none{% endif %}">
                                            <td>{% trans 'Unblock user' %}</td>
                                            <td>
                                                <span class="pull-right">
                                                    <button type="button" class="btn btn-primary btn-xs"  id="btn-unblock-user" style="width: 54px">{% trans 'Unblock' %}</button>
                                                </span>
                                            </td>
                                        </tr>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                            {% if user.is_current_org_admin or user.is_superuser %}
                            <div class="panel panel-info">
                                <div class="panel-heading">
                                    <i class="fa fa-info-circle"></i> {% trans 'User group' %}
                                </div>
                                <div class="panel-body">
                                    <table class="table group_edit">
                                        <tbody>
                                            <form>
                                                <tr>
                                                    <td colspan="2" class="no-borders">
                                                        <select data-placeholder="{% trans 'Join user groups' %}" id="groups_selected" class="select2" style="width: 100%" multiple="" tabindex="4">
                                                            {% for group in groups %}
                                                                <option value="{{ group.id }}" id="opt_{{ group.id }}" >{{ group.name }}</option>
                                                            {% endfor %}
                                                        </select>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td colspan="2" class="no-borders">
                                                        <button type="button" class="btn btn-info btn-small" id="btn_join_group">{% trans 'Join' %}</button>
                                                    </td>
                                                </tr>
                                            </form>

                                            {% for group in user_object.groups.all %}
                                                <tr>
                                                    <td >
                                                        <b class="bdg_group" data-gid={{ group.id }}>{{ group.name }}</b>
                                                    </td>
                                                    <td>
                                                        <button class="btn btn-danger pull-right btn-xs btn_leave_group" type="button"><i class="fa fa-minus"></i></button>
                                                    </td>
                                                </tr>
                                            {% endfor %}
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                            {% if LOGIN_CONFIRM_ENABLE %}
                            <div class="panel panel-warning">
                                <div class="panel-heading">
                                    <i class="fa fa-info-circle"></i> {% trans 'Login confirm' %}
                                </div>
                                <div class="panel-body">
                                    <table class="table">
                                        <tbody>
                                            <form>
                                                <tr>
                                                    <td colspan="2" class="no-borders">
                                                        <select data-placeholder="{% trans 'Reviewers' %}" id="id_assignees" class="users-select2" style="width: 100%" multiple="" tabindex="4">
                                                        </select>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td colspan="2" class="no-borders">
                                                        <button type="button" class="btn btn-warning btn-small" id="btn_reviewer_confirm">{% trans 'Confirm' %}</button>
                                                    </td>
                                                </tr>
                                            </form>
                                            {% if user_object.get_login_confirm_setting %}
                                                {% for u in user_object.login_confirm_setting.reviewers.all %}
                                                    <tr>
                                                    <td >
                                                        <b class="bdg_reviewer">{{ u }}</b>
                                                    </td>
                                                    <td>
                                                        <button class="btn btn-danger pull-right btn-xs btn-leave-reviewer" data-uid={{ u.id }} type="button"><i class="fa fa-minus"></i></button>
                                                    </td>
                                                </tr>
                                                {% endfor %}
                                            {% endif %}
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                            {% endif %}
                            {% endif %}
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    {% include 'users/_user_update_pk_modal.html' %}
{% endblock %}
{% block custom_foot_js %}
<script>
jumpserver.nodes_selected = {};
var usersSelect2;

function updateUserGroups(groups) {
    var the_url = "{% url 'api-users:user-update-group' pk=user_object.id %}";
    var body = {
        groups: Object.assign([], groups)
    };
    var success = function(data) {
        // remove all the selected groups from select > option and rendered ul element;
        $('.select2-selection__rendered').empty();
        $('#groups_selected').val('');
        $.map(jumpserver.nodes_selected, function(group_name, index) {
            $('#opt_' + index).remove();
            // change tr html of user groups.
            $('.group_edit tbody').append(
                '<tr>' +
                '<td><b class="bdg_group" data-gid="' + index + '">' + group_name + '</b></td>' +
                '<td><button class="btn btn-danger btn-xs pull-right btn_leave_group" type="button"><i class="fa fa-minus"></i></button></td>' +
                '</tr>'
            )
        });
        // clear jumpserver.groups_selected
        jumpserver.nodes_selected = {};
    };
    requestApi({
        url: the_url,
        body: JSON.stringify(body),
        success: success
    });
}

function updateUserLoginReviewer(reviewers) {
    var url = "{% url 'api-auth:login-confirm-setting-update' user_id=user_object.id %}";
    var data = {reviewers: reviewers};
    requestApi({
        url: url,
        data: JSON.stringify(data),
        method: 'PATCH',
        success: function () {
            window.location.reload();
        }
    })
}

$(document).ready(function() {
    $('.select2').select2()
        .on('select2:select', function(evt) {
            var data = evt.params.data;
            jumpserver.nodes_selected[data.id] = data.text;
        })
        .on('select2:unselect', function(evt) {
            var data = evt.params.data;
            delete jumpserver.nodes_selected[data.id];
        });
    usersSelect2 = usersSelect2Init('.users-select2')
})
.on('click', '#is_active', function() {
    var the_url = "{% url 'api-users:user-detail' pk=user_object.id %}";
    var checked = $(this).prop('checked');
    var body = {
        'is_active': checked
    };
    var success = '{% trans "Update successfully!" %}';
    requestApi({
        url: the_url,
        body: JSON.stringify(body),
        success_message: success
    });
})
.on('click', '#force_enable_otp', function() {
    {% if request.user == user_object %}
        toastr.error("{% trans 'Goto profile page enable MFA' %}");
        return;
    {% endif %}

    var the_url = "{% url 'api-users:user-detail' pk=user_object.id %}";
    var checked = $(this).prop('checked');
    var otp_level;
    var otp_secret_key;
    if(checked){
        otp_level = 2
    }else{
        otp_level = 0;
        otp_secret_key = '';
    }
    var body = {
        'otp_level': otp_level,
        'otp_secret_key': otp_secret_key
    };
    var success = '{% trans "Update successfully!" %}';
    requestApi({
        url: the_url,
        body: JSON.stringify(body),
        success_message: success
    });
 })
.on('click', '#btn_join_group', function() {
    if (Object.keys(jumpserver.nodes_selected).length === 0) {
        return false;
    }
    var groups = $('.bdg_group').map(function() {
        return $(this).data('gid');
    }).get();
    $.map(jumpserver.nodes_selected, function(value, index) {
        groups.push(index);
        $('#opt_' + index).remove();
    });
    updateUserGroups(groups)
}).on('click', '.btn_leave_group', function() {
    var $this = $(this);
    var $tr = $this.closest('tr');
    var $badge = $tr.find('.bdg_group');
    var gid = $badge.data('gid');
    var group_name = $badge.html() || $badge.text();
    $('#groups_selected').append(
        '<option value="' + gid + '" id="opt_' + gid + '">' + group_name + '</option>'
    );
    $tr.remove();
    var groups = $('.bdg_group').map(function() {
        return $(this).data('gid');
    }).get();
    updateUserGroups(groups)
}).on('click', '#btn-reset-password', function() {
    function doReset() {
        var the_url = '{% url "api-users:user-reset-password" pk=user_object.id %}';
        var body = {};
        var success = function() {
            var msg = "{% trans "An e-mail has been sent to the user`s mailbox." %}";
            swal("{% trans 'Reset password' %}", msg, "success");
        };
        requestApi({
            url: the_url,
            body: JSON.stringify(body),
            success: success
        });
    }
    swal({
        title: "{% trans 'Are you sure?' %}",
        text: "{% trans "This will reset the user password and send a reset mail"%}",
        type: "warning",
        showCancelButton: true,
        cancelButtonText: "{% trans 'Cancel' %}",
        confirmButtonColor: "#DD6B55",
        confirmButtonText: "{% trans 'Confirm' %}",
        closeOnConfirm: false
    }, function() {
        doReset();
    });
}).on('click', '#btn-reset-pk', function() {
    function doReset() {
        var the_url = '{% url "api-users:user-public-key-reset" pk=user_object.id %}';
        var body = {};
        var success = function() {
            var msg = "{% trans 'The reset-ssh-public-key E-mail has been sent successfully. Please inform the user to update his new ssh public key.' %}";
            swal("{% trans 'Reset SSH public key' %}", msg, "success");
        };
        requestApi({
            url: the_url,
            body: body,
            success: success
        });
    }
    swal({
        title: "{% trans 'Are you sure?' %}",
        text: "{% trans 'This will reset the user public key and send a reset mail' %}",
        type: "warning",
        showCancelButton: true,
        cancelButtonText: "{% trans 'Cancel' %}",
        confirmButtonColor: "#DD6B55",
        confirmButtonText: "{% trans 'Confirm' %}",
        closeOnConfirm: false
    }, function() {
        doReset();
    });
}).on('click', '#btn-user-update-pk', function(){
    var $this = $(this);
    var pk = $('#txt_pk').val();
    var the_url = '{% url "api-users:user-public-key-reset" pk=user.id %}';
    var body = {'_public_key': pk};
    var success = function() {
        $('#txt_pk').val('');
        $this.closest('.modal').modal('hide');
        var msg = "{% trans 'Successfully updated the SSH public key.' %}";
        swal("{% trans 'User SSH public key update' %}", msg, "success");
    };
    var fail = function(msg) {
        swal({
            title: "{% trans 'User SSH public key update' %}",
            text: msg,
            type: "error",
            showCancelButton: false,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: "{% trans 'Confirm' %}",
            closeOnConfirm: true
            }, function () {
              $('#txt_pk').focus();
            }
        );
    };
    requestApi({ url: the_url, body: JSON.stringify(body), success: success, error: fail});
}).on('click', '.btn-delete-user', function () {
    var $this = $(this);
    var name = "{{ user_object.name }}";
    var uid = "{{ user_object.id }}";
    var the_url = '{% url "api-users:user-detail" pk=DEFAULT_PK %}'.replace('{{ DEFAULT_PK }}', uid);
    var redirect_url = "{% url 'users:user-list' %}";
    objectDelete($this, name, the_url, redirect_url);
}).on('click', '#btn-unblock-user', function () {
    function doReset() {
        {#var the_url = '{% url "api-users:user-reset-password" pk=user_object.id %}';#}
        var the_url = '{%  url "api-users:user-unblock" pk=user_object.id %}';
        var body = {};
        var success = function() {
            var msg = "{% trans "Success" %}";
            {#swal("{% trans 'Unblock user' %}", msg, "success");#}
            swal({
                title: "{% trans 'Unblock user' %}",
                text: msg,
                type: "success"
                }, function() {
                    location.reload()
                }
            );
        };
        requestApi({
            url: the_url,
            body: JSON.stringify(body),
            success: success
        });
    }
    swal({
        title: "{% trans 'Are you sure?' %}",
        text: "{% trans "After unlocking the user, the user can log in normally."%}",
        type: "warning",
        showCancelButton: true,
        cancelButtonText: "{% trans 'Cancel' %}",
        confirmButtonColor: "#DD6B55",
        confirmButtonText: "{% trans 'Confirm' %}",
        closeOnConfirm: false
    }, function() {
        doReset();
    });
}).on('click', '#btn-reset-mfa', function () {
    requestApi({
        url: "{% url 'api-users:user-reset-otp' pk=user_object.id %}",
        method: "GET",
        success_message: "{% trans 'Reset user MFA success' %}"
    })
}).on('click', '.btn-leave-reviewer', function () {
    var reviewersId = [];
    var removeReviewerId = $(this).data('uid');
    $('.btn-leave-reviewer').each(function (i, v) {
        var reviewerId = $(v).data('uid');
        if (reviewerId !== removeReviewerId) {
            reviewersId.push(reviewerId);
        }
    });
    updateUserLoginReviewer(reviewersId);
}).on('click', '#btn_reviewer_confirm', function () {
    var reviewersId = [];
    $('.btn-leave-reviewer').each(function (i, v) {
        var reviewerId = $(v).data('uid');
        reviewersId.push(reviewerId);
    });
    var selectedId = usersSelect2.val();
    if (selectedId.length === 0) {
        return
    }
    selectedId.forEach(function (i) {
        if (reviewersId.indexOf(i) === -1) {
            reviewersId.push(i)
        }
    });
    updateUserLoginReviewer(reviewersId);
})
</script>
{% endblock %}
