keycloak-theme-pirati/admin/resources/partials/authz/policy/resource-server-policy-eval...

267 lines
17 KiB
HTML

<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()">{{:: 'back' | translate}}</a>
|
<a href="" data-ng-click="reevaluate()">{{:: 'authz-evaluation-re-evaluate' | translate}}</a>
|
<a href="" data-ng-click="showAuthzData()">{{:: 'authz-show-authorization-data' | 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-show="showRpt">
<div class="form-group">
<label class="col-sm-1 control-label" for="rpt">{{:: 'authz-evaluation-authorization-data' | translate}}</label>
<div class="col-md-6">
<textarea id="rpt" class="form-control" rows="20">{{evaluationResult.rpt | json}}</textarea>
</div>
<kc-tooltip>{{:: 'authz-evaluation-authorization-data.tooltip' | translate}}</kc-tooltip>
</div>
</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">
<input type="hidden" ui-select2="usersUiSelect" id="users" data-ng-model="selectedUser" data-ng-change="selectUser(selectedUser);" data-placeholder="{{:: 'authz-select-user' | translate}}..."
data-ng-required="!authzRequest.roleIds || authzRequest.roleIds.length == 0">
</input>
</div>
<kc-tooltip>{{:: 'authz-evaluation-user.tooltip' | translate}}</kc-tooltip>
</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">
<input type="hidden" ui-select2="resourcesUiSelect" id="reqActions3" data-ng-change="resolveScopes()" data-ng-model="newResource" data-placeholder="{{:: 'authz-select-resource' | translate}}..." data-ng-required="!applyResourceType && authzRequest.resources.length == 0 && !authzRequest.entitlements" />
</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">
<input type="hidden" ui-select2="scopesUiSelect" id="reqActions" data-ng-model="newScopes" data-placeholder="{{:: 'authz-any-scope' | translate}}..." multiple />
</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="newScopes"
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.name ? scope.name : 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 && !showRpt"/>
</div>
<kc-menu></kc-menu>