{{template "base" .}}

{{define "title"}}{{.Title}}{{end}}

{{define "page_body"}}

<div class="card shadow mb-4">
    <div class="card-header py-3">
        <h6 class="m-0 font-weight-bold text-primary">My profile - {{.LoggedUser.Username}}</h6>
    </div>
    <div class="card-body">
        {{if .Error}}
        <div class="card mb-4 border-left-warning">
            <div class="card-body text-form-error">{{.Error}}</div>
        </div>
        {{end}}
        <form id="profile_form" action="{{.CurrentURL}}" method="POST">
            <div class="form-group row">
                <label for="idEmail" class="col-sm-2 col-form-label">Email</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="idEmail" name="email" placeholder=""
                        value="{{.Email}}" maxlength="255" autocomplete="nope" {{if not .LoggedUser.CanChangeInfo}}readonly{{end}}>
                </div>
            </div>

            <div class="form-group row">
                <label for="idDescription" class="col-sm-2 col-form-label">Description</label>
                <div class="col-sm-10">
                    <input type="text" class="form-control" id="idDescription" name="description" placeholder=""
                        value="{{.Description}}" maxlength="255" {{if not .LoggedUser.CanChangeInfo}}readonly{{end}}>
                </div>
            </div>

            <div class="form-group">
                <div class="form-check">
                    <input type="checkbox" class="form-check-input" id="idAllowAPIKeyAuth" name="allow_api_key_auth" {{if not .LoggedUser.CanChangeAPIKeyAuth}}disabled="disabled"{{end}}
                    {{if .AllowAPIKeyAuth}}checked{{end}} aria-describedby="allowAPIKeyAuthHelpBlock">
                    <label for="idAllowAPIKeyAuth" class="form-check-label">Allow API key authentication</label>
                    <small id="allowAPIKeyAuthHelpBlock" class="form-text text-muted">
                        Allow to impersonate yourself, in REST API, with an API key. If this permission is not granted, your credentials are required to use the REST API on your behalf
                    </small>
                </div>
            </div>

            {{if .LoggedUser.CanManagePublicKeys}}
            <div class="card bg-light mb-3">
                <div class="card-header">
                    Public keys
                </div>
                <div class="card-body">
                    <div class="form-group row">
                        <div class="col-md-12 form_field_pk_outer">
                            {{range $idx, $val := .PublicKeys}}
                            <div class="row form_field_pk_outer_row">
                                <div class="form-group col-md-11">
                                    <textarea class="form-control" id="idPublicKey{{$idx}}" name="public_keys" rows="4"
                                        placeholder="Paste your public key here">{{$val}}</textarea>
                                </div>
                                <div class="form-group col-md-1">
                                    <button class="btn btn-circle btn-danger remove_pk_btn_frm_field">
                                        <i class="fas fa-trash"></i>
                                    </button>
                                </div>
                            </div>
                            {{else}}
                            <div class="row form_field_pk_outer_row">
                                <div class="form-group col-md-11">
                                    <textarea class="form-control" id="idPublicKey0" name="public_keys" rows="4"
                                        placeholder="Paste your public key here"></textarea>
                                </div>
                                <div class="form-group col-md-1">
                                    <button class="btn btn-circle btn-danger remove_pk_btn_frm_field" disabled>
                                        <i class="fas fa-trash"></i>
                                    </button>
                                </div>
                            </div>
                            {{end}}
                        </div>
                    </div>

                    <div class="row mx-1">
                        <button type="button" class="btn btn-secondary add_new_pk_field_btn">
                            <i class="fas fa-plus"></i> Add new public key
                        </button>
                    </div>
                </div>
            </div>
            {{end}}
            {{if .CanSubmit}}
            <input type="hidden" name="_form_token" value="{{.CSRFToken}}">
            <button type="submit" class="btn btn-primary float-right mt-3 px-5 px-3">Submit</button>
            {{end}}
        </form>
    </div>
</div>
{{end}}

{{define "extra_js"}}
{{if .LoggedUser.CanManagePublicKeys}}
<script type="text/javascript">
    $(document).ready(function () {
        $("body").on("click", ".add_new_pk_field_btn", function () {
            var index = $(".form_field_pk_outer").find(".form_field_pk_outer_row").length;
            while (document.getElementById("idPublicKey"+index) != null){
                index++;
            }
            $(".form_field_pk_outer").append(`
                    <div class="row form_field_pk_outer_row">
                        <div class="form-group col-md-11">
                            <textarea class="form-control" id="idPublicKey${index}" name="public_keys" rows="4"
                                placeholder="Paste your public key here"></textarea>
                        </div>
                        <div class="form-group col-md-1">
                            <button class="btn btn-circle btn-danger remove_pk_btn_frm_field">
                                <i class="fas fa-trash"></i>
                            </button>
                        </div>
                    </div>
                `);
        });

        $("body").on("click", ".remove_pk_btn_frm_field", function () {
            $(this).closest(".form_field_pk_outer_row").remove();
        });
    });
</script>
{{end}}
{{end}}