<div class="col-sm-9 col-md-10 col-sm-push-3 col-md-push-2">

    <ol class="breadcrumb">
        <li><a href="#/realms/{{realm.realm}}/clients">{{:: 'clients' | translate}}</a></li>
        <li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}">{{client.clientId}}</a></li>
        <li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server">{{:: 'authz-authorization' | translate}}</a></li>
        <li><a href="#/realms/{{realm.realm}}/clients/{{client.id}}/authz/resource-server/evaluate">{{:: 'authz-policy-evaluation' | translate}}</a></li>
    </ol>

    <kc-tabs-resource-server></kc-tabs-resource-server>

    <div data-ng-show="showResult">
        <br>
        <a href="" data-ng-click="showRequestTab()">{{:: 'authz-evaluation-new' | translate}}</a>
    </div>

    <div data-ng-show="evaluationResult && !showResult">
        <br>
        <a href="" data-ng-click="showResultTab()">{{:: 'authz-evaluation-previous' | translate}}</a>
    </div>

    <div data-ng-hide="showResult">
        <form class="form-horizontal" name="clientForm" novalidate>
            <fieldset>
                <fieldset class="border-top">
                    <legend><span class="text">{{:: 'authz-evaluation-identity-information' | translate}}</span>
                        <kc-tooltip>{{:: 'authz-evaluation-identity-information.tooltip' | translate}}</kc-tooltip>
                    </legend>
                    <div class="form-group">
                        <label class="col-md-2 control-label" for="client">{{:: 'client' | translate}}</label>

                        <div class="col-sm-2">
                            <div>
                                <select class="form-control" id="client"
                                        ng-model="authzRequest.clientId"
                                        ng-options="client.id as client.clientId for client in clients track by client.id">
                                    <option value="">{{:: 'authz-select-client' | translate}}...</option>
                                </select>
                            </div>
                        </div>
                        <kc-tooltip>{{:: 'authz-evaluation-client.tooltip' | translate}}</kc-tooltip>
                    </div>
                    <div class="form-group clearfix">
                        <label class="col-md-2 control-label" for="users">{{:: 'user' | translate}} <span class="required"
                                                                                     data-ng-show="!authzRequest.roleIds || authzRequest.roleIds.length == 0">*</span></label>

                        <div class="col-md-6">
                            <select ui-select2="{ minimumInputLength: 1, allowClear:true}" id="users"
                                    data-ng-model="authzRequest.userId" data-placeholder="{{:: 'authz-select-user' | translate}}..."
                                    ng-options="user.id as user.username for user in users track by user.id"
                                    data-ng-required="!authzRequest.roleIds || authzRequest.roleIds.length == 0">
                                <option value=""></option>
                            </select>
                        </div>

                        <kc-tooltip>{{:: 'authz-evaluation-user.tooltip' | translate}}</kc-tooltip>
                    </div>

                    <div class="form-group">
                        <div class="col-md-10 col-md-offset-2">
                            <button class="btn btn-primary" data-ng-click="entitlements()" data-ng-disabled="authzRequest.userId == null || authzRequest.clientId == null">{{:: 'authz-entitlements' | translate}}</button>
                        </div>
                    </div>

                    <div class="form-group clearfix">
                        <label class="col-md-2 control-label" for="reqActions">{{:: 'roles' | translate}} <span class="required"
                                                                                           data-ng-show="!authzRequest.userId || authzRequest.userId == null">*</span></label>

                        <div class="col-md-6">
                            <select ui-select2="{ minimumInputLength: 1}"
                                    data-ng-model="authzRequest.roleIds"
                                    data-placeholder="{{:: 'authz-any-role' | translate}}..." multiple
                                    data-ng-required="!authzRequest.userId || authzRequest.userId == null">
                                <option ng-repeat="role in roles track by role.id" value="{{role.name}}">{{role.name}}
                                </option>
                            </select>
                        </div>

                        <kc-tooltip>{{:: 'authz-evaluation-role.tooltip' | translate}}</kc-tooltip>
                    </div>
                </fieldset>
                <fieldset>
                    <legend collapsed><span class="text">{{:: 'authz-evaluation-contextual-info' | translate}}</span>
                        <kc-tooltip>{{:: 'authz-evaluation-contextual-info.tooltip' | translate}}</kc-tooltip>
                    </legend>
                    <div class="form-group clearfix block">
                        <label class="col-md-2 control-label" for="newRedirectUri">{{:: 'authz-evaluation-contextual-attributes' | translate}}</label>

                        <div class="col-sm-6">
                            <table class="table table-striped table-bordered">
                                <thead>
                                    <tr>
                                        <th>{{:: 'key' | translate}}</th>
                                        <th>{{:: 'value' | translate}}</th>
                                        <th>{{:: 'actions' | translate}}</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr ng-repeat="(key, value) in (authzRequest.context.attributes)">
                                        <td>{{getContextAttributeName(key)}}</td>
                                        <td>
                                            <select class="form-control" id="attribute-{{key}}"
                                                    data-ng-model="authzRequest.context.attributes[key]"
                                                    data-ng-show="getContextAttribute(key).values"
                                                    ng-options="value1.key as value1.name for value1 in getContextAttribute(key).values">
                                            </select>
                                            <input ng-model="authzRequest.context.attributes[key]" class="form-control"
                                                   type="text" name="{{key}}" id="attribute-{{key}}"
                                                   data-ng-hide="getContextAttribute(key).values"/>
                                        </td>
                                        <td class="kc-action-cell">
                                            <button class="btn btn-default btn-block btn-sm"
                                                    data-ng-click="removeContextAttribute(key)">{{:: 'delete' | translate}}
                                            </button>
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <select class="form-control" id="newContextAttribute.key"
                                                    data-ng-model="newContextAttribute"
                                                    ng-change="selectDefaultContextAttribute()"
                                                    data-ng-hide="!isDefaultContextAttribute()"
                                                    ng-options="attribute as attribute.name for attribute in defaultContextAttributes track by attribute.key">
                                            </select>
                                            <input ng-model="newContextAttribute.key" class="form-control" type="text"
                                                   id="newAttributeKey" data-ng-hide="isDefaultContextAttribute()"/>
                                        </td>
                                        <td>
                                            <select class="form-control" id="newContextAttribute.value"
                                                    data-ng-model="newContextAttribute.value"
                                                    data-ng-show="newContextAttribute.values"
                                                    ng-options="value.key as value.name for value in newContextAttribute.values track by value.key">
                                            </select>
                                            <input ng-model="newContextAttribute.value" class="form-control" type="text"
                                                   id="newAttributeValue" data-ng-show="!newContextAttribute.values"/>
                                        </td>
                                        <td class="kc-action-cell">
                                            <button class="btn btn-default btn-block btn-sm"
                                                    data-ng-click="addContextAttribute()"
                                                    data-ng-disabled="!newContextAttribute.key || newContextAttribute.key == ''">
                                                {{:: 'add' | translate}}
                                            </button>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>

                        <kc-tooltip>{{:: 'authz-evaluation-contextual-attributes.tooltip' | translate}}</kc-tooltip>
                    </div>
                </fieldset>
                <fieldset>
                    <legend><span class="text">{{:: 'authz-permissions' | translate}}</span>
                        <kc-tooltip>{{:: 'authz-evaluation-permissions.tooltip' | translate}}</kc-tooltip>
                    </legend>
                    <div class="form-group">
                        <label class="col-md-2 control-label" for="applyResourceType">{{:: 'authz-permission-resource-apply-to-resource-type' | translate}}</label>

                        <div class="col-md-6">
                            <input ng-model="applyResourceType" id="applyResourceType" onoffswitch
                                   data-ng-click="setApplyToResourceType()"/>
                        </div>
                        <kc-tooltip>{{:: 'authz-permission-resource-apply-to-resource-type.tooltip' | translate}}
                        </kc-tooltip>
                    </div>
                    <div class="form-group clearfix" data-ng-hide="applyResourceType">
                        <label class="col-md-2 control-label" for="reqActions">{{:: 'authz-resources' | translate}} <span class="required">*</span></label>

                        <div class="col-md-6">
                            <select ui-select2="{ minimumInputLength: 1, allowClear:true }"
                                    ng-model="newResource._id"
                                    data-placeholder="Select a resource..."
                                    data-ng-required="!applyResourceType && authzRequest.resources.length == 0 && !authzRequest.entitlements"
                                    data-ng-click="resolveScopes()"
                                    ng-options="resource._id as resource.name for resource in resources track by resource._id">
                                <option value=""></option>
                            </select>
                        </div>
                        <kc-tooltip>{{:: 'authz-permission-resource-resource.tooltip' | translate}}</kc-tooltip>
                    </div>
                    <div class="form-group clearfix" data-ng-show="applyResourceType">
                        <label class="col-md-2 control-label" for="newResource.type">{{:: 'authz-resource-type' | translate}} <span
                                class="required">*</span></label>

                        <div class="col-md-6">
                            <input class="form-control" type="text" id="newResource.type" name="newResource.type"
                                   data-ng-model="authzRequest.resources[0].type"
                                   data-ng-required="applyResourceType && !authzRequest.resources[0].type && !authzRequest.entitlements">
                        </div>

                        <kc-tooltip>{{:: 'authz-permission-resource-type.tooltip' | translate}}</kc-tooltip>
                    </div>
                    <div class="form-group clearfix" data-ng-show="applyResourceType || newResource._id == null">
                        <label class="col-md-2 control-label" for="newResource.scopes">{{:: 'authz-scopes' | translate}}</label>

                        <div class="col-md-6">
                            <select ui-select2="{ minimumInputLength: 1}"
                                    id="newResource.scopes"
                                    multiple
                                    data-ng-model="newResource.scopes"
                                    data-placeholder="{{:: 'authz-select-scope' | translate}}..."
                                    data-ng-options="scope.name as scope.name for scope in scopes track by scope.name"/>
                        </div>

                        <kc-tooltip>{{:: 'authz-permission-scope-scope.tooltip' | translate}}</kc-tooltip>
                    </div>
                    <div class="form-group clearfix" data-ng-show="newResource._id != null">
                        <label class="col-md-2 control-label" for="newResource.scopes">{{:: 'authz-scopes' | translate}}</label>

                        <div class="col-md-6">
                            <select ui-select2
                                    id="newResource.scopes"
                                    data-ng-model="newResource.scopes"
                                    data-placeholder="{{:: 'authz-any-scope' | translate}}..." multiple>
                                <option ng-repeat="scope in scopes" value="{{scope.name}}">{{scope.name}}</option>
                            </select>
                        </div>

                        <kc-tooltip>{{:: 'authz-permission-scope-scope.tooltip' | translate}}</kc-tooltip>
                    </div>
                    <div class="form-group clearfix block" data-ng-show="!applyResourceType">
                        <label class="col-md-2 control-label" for="newRedirectUri"></label>

                        <div class="col-sm-6">
                            <button data-ng-click="addResource()" class="btn btn-primary">Add</button>
                            <table class="table table-striped table-bordered">
                                <thead>
                                    <tr>
                                        <th>{{:: 'authz-resource' | translate}}</th>
                                        <th>{{:: 'authz-scopes' | translate}}</th>
                                        <th>{{:: 'actions' | translate}}</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr data-ng-show="!authzRequest.resources || authzRequest.resources.length == 0">
                                        <td colspan="3">
                                            {{:: 'authz-no-resources' | translate}}
                                        </td>
                                    </tr>
                                    <tr ng-repeat="resource in authzRequest.resources">
                                        <td>{{resource.name ? resource.name : 'authz-evaluation-any-resource-with-scopes' | translate}}</td>
                                        <td>
                                            <span data-ng-show="!resource.scopes.length">{{:: 'authz-any-scope' | translate}}.</span>
                                        <span data-ng-show="resource.scopes.length > 0">
                                            <span ng-repeat="scope in resource.scopes">
                                                {{scope}} {{$last ? '' : ', '}}
                                            </span>
                                        </span>
                                        </td>
                                        <td class="kc-action-cell">
                                            <button class="btn btn-default btn-block btn-sm"
                                                    data-ng-click="removeResource($index)">{{:: 'delete' | translate}}
                                            </button>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </fieldset>

                <div class="form-group">
                    <div class="col-md-10 col-md-offset-2">
                        <button kc-save data-ng-click="evaluate()">{{:: 'authz-evaluation-evaluate' | translate}}</button>
                        <button kc-reset data-ng-disabled="!changed">{{:: 'reset' | translate}}</button>
                    </div>
                </div>
            </fieldset>
        </form>
    </div>
    <div data-ng-include="resultUrl" data-ng-show="showResult"/>
</div>

<kc-menu></kc-menu>