blob: 7e5ae578ccada31f614ad5d7efd5b4ab7d39da92 [file] [log] [blame]
# Copyright 2021 The casbin Authors. All Rights Reserved.
#
# Licensed 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.
from .effector import Effector
class AllowOverrideEffector(Effector):
def intermediate_effect(self, effects):
"""returns a intermediate effect based on the matched effects of the enforcer"""
if Effector.ALLOW in effects:
return Effector.ALLOW
return Effector.INDETERMINATE
def final_effect(self, effects):
"""returns the final effect based on the matched effects of the enforcer"""
if Effector.ALLOW in effects:
return Effector.ALLOW
return Effector.DENY
class DenyOverrideEffector(Effector):
def intermediate_effect(self, effects):
"""returns a intermediate effect based on the matched effects of the enforcer"""
if Effector.DENY in effects:
return Effector.DENY
return Effector.INDETERMINATE
def final_effect(self, effects):
"""returns the final effect based on the matched effects of the enforcer"""
if Effector.DENY in effects:
return Effector.DENY
return Effector.ALLOW
class AllowAndDenyEffector(Effector):
def intermediate_effect(self, effects):
"""returns a intermediate effect based on the matched effects of the enforcer"""
if Effector.DENY in effects:
return Effector.DENY
return Effector.INDETERMINATE
def final_effect(self, effects):
"""returns the final effect based on the matched effects of the enforcer"""
if Effector.DENY in effects or Effector.ALLOW not in effects:
return Effector.DENY
return Effector.ALLOW
class PriorityEffector(Effector):
def intermediate_effect(self, effects):
"""returns a intermediate effect based on the matched effects of the enforcer"""
if Effector.ALLOW in effects:
return Effector.ALLOW
if Effector.DENY in effects:
return Effector.DENY
return Effector.INDETERMINATE
def final_effect(self, effects):
"""returns the final effect based on the matched effects of the enforcer"""
if Effector.ALLOW in effects:
return Effector.ALLOW
if Effector.DENY in effects:
return Effector.DENY
return Effector.DENY