aboutsummaryrefslogtreecommitdiffstats
path: root/src/templates/base/account/settings.html
blob: 611ae38401709b9d87ea738fdfbbcb56426a13bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
{% extends "base.html" %}
{% load staticfiles %}
{% load bootstrap4 %}
{% block content %}
<h1>Settings</h1>
    <form action="/accounts/settings/" method="post">
        {% csrf_token %}
        <input id="hidden_key_list" type="hidden" name="ssh_key_list" value="">
        <div class="form-group">
        <label>Your IPA Username</label>
        <input type="text" class="form-control" disabled="true" style="width: 300px;" value="{{ ipa_username }}">
        <p>To change your password and access advanced account management, please go <a href="http://os-passwd.iol.unh.edu">here</a></p>
        {{ company_form }}
        {{ preference_form }}
        <br>
        <label>SSH Keys:</label>
        <ul class="list-group" id="key_ul">
            {% for key in existing_keys %}
            <li class="card w-25 mb-1">
                <div class="card-body" style="height: 150px; overflow-y: auto;">
                    {{key}}
                </div>
                <div class="card-footer d-flex flex-row-reverse">
                    <div class="btn btn-danger" onclick="remove_key('{{key}}', this.parentNode.parentNode)">Delete</div>
                </div>
            </li>
            {% endfor %}
        </ul>
        <li class="card w-25 text-truncate mb-1">
            <div class="card-body">
                <textarea id="new_key_area" placeholder="New SSH Public Key" class="form-control" id="new_key_input"></textarea>            </div>
            <div class="card-footer d-flex flex-row-reverse">
                <div class="btn btn-success" onclick="add_key(this.parentNode.parentNode.childNodes[1].childNodes[1].value)">Add</div>
            </div>
        </li>
        <input class="btn btn-success mt-5" style="width: 100px" name="submitButton" type="submit" value="Save">
        </div>
    </form>

<script>
let key_list = []
$(window).on('load', function() {
    document.getElementById('new_key_area').value = "";
    {% for key in existing_keys %}
    key_list.push('{{key}}')
    {% endfor %}
    update_json_list()
});


function remove_key(target_key, node) {
    key_list = key_list.filter(key => key != target_key);
    node.setAttribute("hidden", "true");
    update_json_list()
}

function add_key(key_string) {
    console.log(key_string)
    if (key_list.indexOf(key_string) != -1) {
        alert('This key has already been added');
        return;
    }
    key_list.push(key_string)
    create_key_card(key_string)
    update_json_list()
}

function create_key_card(key_string) {
    const elem = document.createElement('li');
    elem.classList.add('card', 'w-25', 'mb-1');
    elem.innerHTML = `
    <div class="card-body" style="height: 150px; overflow-y: auto;">
        ` + key_string + `
    </div>
    <div class="card-footer d-flex flex-row-reverse">
        <div class="btn btn-danger" onclick="remove_key('` + key_string +`', this.parentNode.parentNode)">Delete</div>
    </div>
    `

    document.getElementById('key_ul').appendChild(elem);
    document.getElementById('new_key_area').value = "";

}

function update_json_list() {
    document.getElementById("hidden_key_list").value = key_list.toString()
}
</script>
{% endblock content %}