~roadmr/canonical-identity-provider/webauthn-register-endpoint-part-2-the-registration

« back to all changes in this revision

Viewing changes to src/identityprovider/views/readonly.py

Merged webauthn-register-endpoint into webauthn-register-endpoint-part-2-the-registration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright 2010 Canonical Ltd.  This software is licensed under the
2
 
# GNU Affero General Public License version 3 (see the file LICENSE).
3
 
 
4
 
import json
5
 
import logging
6
 
 
7
 
from django.conf import settings
8
 
from django.contrib.admin.views.decorators import staff_member_required
9
 
from django.http import Http404, HttpResponse, HttpResponseRedirect
10
 
from django.shortcuts import render
11
 
from django.views.decorators.csrf import csrf_exempt
12
 
from django.views.decorators.http import require_POST
13
 
 
14
 
from identityprovider.readonly import (
15
 
    ReadOnlyManager,
16
 
    get_server_atts,
17
 
    update_server,
18
 
)
19
 
 
20
 
 
21
 
logger = logging.getLogger(__name__)
22
 
 
23
 
 
24
 
@staff_member_required
25
 
def readonly_admin(request):
26
 
    atts = get_server_atts(settings.APP_SERVERS)
27
 
    return render(request, 'admin/readonly.html', atts)
28
 
 
29
 
 
30
 
@staff_member_required
31
 
def readonly_confirm(request, action, appserver=None):
32
 
    if request.method == 'POST':
33
 
        update_server(action, appserver)
34
 
        return HttpResponseRedirect('/readonly')
35
 
    context = {
36
 
        'appserver': appserver,
37
 
        'action': action,
38
 
    }
39
 
    return render(request, 'admin/readonly_confirm.html', context)
40
 
 
41
 
 
42
 
@csrf_exempt
43
 
@require_POST
44
 
def readonly_data(request):
45
 
    """Provides data about the readonly status of this app server."""
46
 
 
47
 
    secret = request.POST.get('secret')
48
 
    if secret != settings.READONLY_SECRET:
49
 
        logger.warning(
50
 
            'readonly_data request received with incorrect secret %r', secret)
51
 
        raise Http404()
52
 
 
53
 
    action = request.POST.get('action')
54
 
    romanager = ReadOnlyManager()
55
 
 
56
 
    if action == 'set':
57
 
        romanager.set_readonly()
58
 
    elif action == 'clear':
59
 
        romanager.clear_readonly()
60
 
 
61
 
    result = {
62
 
        'readonly': settings.READ_ONLY_MODE,
63
 
    }
64
 
    return HttpResponse(json.dumps(result))