| 146 | } |
| 147 | |
| 148 | func (s *Server) parseParam(param, matcher string) (interface{}, string) { |
| 149 | if strings.HasPrefix(param, "ABAC::") { |
| 150 | attrList, err := resolveABAC(param) |
| 151 | if err != nil { |
| 152 | panic(err) |
| 153 | } |
| 154 | for k, v := range attrList.nameMap { |
| 155 | old := "." + k |
| 156 | if strings.Contains(matcher, old) { |
| 157 | matcher = strings.Replace(matcher, old, "."+v, -1) |
| 158 | } |
| 159 | } |
| 160 | return attrList, matcher |
| 161 | } else { |
| 162 | return param, matcher |
| 163 | } |
| 164 | } |
| 165 | |
| 166 | func (s *Server) Enforce(ctx context.Context, in *pb.EnforceRequest) (*pb.BoolReply, error) { |
| 167 | e, err := s.getEnforcer(int(in.EnforcerHandler)) |