blob: 510342edfedcd7201f54b215f0c5ffd8443175fb [file] [log] [blame]
{#-
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-#}
{% set hide_left_bar = True %}
{% extends "allura:templates/user_account_base.html" %}
{% block title %}{{c.user.username}} / Applications {% endblock %}
{% block header %}OAuth2 applications registered for {{c.user.username}}{% endblock %}
{% block extra_css %}
<style type="text/css">
table {
border: 1px solid #e5e5e5;
}
th {
text-align: left;
width: 10em;
padding: 5px;
border: 1px solid #e5e5e5;
}
tr.description p {
padding-left: 0;
}
tr.description p:last-child {
padding-bottom: 0;
}
tr.controls input[type="submit"] {
margin-bottom: 0;
}
</style>
{% endblock %}
{% block extra_js %}
<script type="text/javascript">
$(function() {
var btnClicked;
// The click event will always trigger before the submit event, this will give us the chance to
// figure out which button was clicked in order to display the correct confirmation dialog
$('#deregister,#revoke').click(function(){
btnClicked = this.name;
});
$('.client_action').submit(function(e) {
var confirmMsg;
if(btnClicked === 'deregister') {
confirmMsg = 'Deregister client?. This action will also revoke authorization and access tokens.'
}
if(btnClicked === 'revoke') {
confirmMsg = "Revoke client's authorization codes and access tokens?. This action will not delete the current client."
}
var ok = confirm(confirmMsg)
if(!ok) {
e.preventDefault();
return false;
}
});
})
</script>
{% endblock %}
{% block content %}
{{ super() }}
<h2>My Clients</h2>
<p>
These are the clients you have registered. They can request authorization
for a user by sending the client id and a response type.
Once you have an authorization code, you can generate an access token to give your client access
to your account and use a refresh token to generate a new one each time it expires. Note, however,
that you must be careful with access tokens, since anyone who has the token can
access your account as that client.
</p>
{% for app in model %}
<table class="registered_app">
<tr><th>Name:</th><td>{{app.client.name}}</td></tr>
<tr class="description"><th>Description:</th><td>{{app.client.description }}</td></tr>
<tr class="client_id"><th>Client ID:</th><td>{{app.client.client_id}}</td></tr>
<tr class="redirect_url"><th>Redirect URL:</th><td>{{app.client.redirect_uris[0] if app.client.redirect_uris else ''}}</td></tr>
{% if app.authorization %}
<tr class="grant_type"><th>Grant Type:</th><td>{{app.client.grant_type}}</td></tr>
<tr class="authorization_code"><th>Authorization Code:</th><td>{{app.authorization.authorization_code}}</td></tr>
<tr class="authorization_code_expires"><th>Authorization Code Expires At:</th><td>{{app.authorization.expires_at.strftime('%Y-%m-%d %H:%M:%S')}} UTC</td></tr>
{% endif %}
{% if app.token %}
<tr class="access_token"><th>Access Token:</th><td>{{app.token.access_token}}</td></tr>
<tr class="access_token_expires"><th>Access Token Expires At:</th><td>{{app.token.expires_at.strftime('%Y-%m-%d %H:%M:%S')}} UTC</td></tr>
<tr class="refresh_token"><th>Refresh Token:</th><td>{{app.token.refresh_token}}</td></tr>
{% endif %}
<tr class="controls">
<td colspan="2">
<form method="POST" action="do_client_action" class="client_action">
<input type="hidden" name="_id" value="{{app.client.client_id}}"/>
<input id="deregister" type="submit" name="deregister" value="Deregister Client"/>
<input id="revoke" type="submit" name="revoke" value="Revoke Access"/>
{{lib.csrf_token()}}
</form>
</td>
</tr>
</table>
{% endfor %}
<h2>Register New Application</h2>
{{ c.form.display() }}
{% endblock %}