diff options
author | Jonathan Leech-Pepin <jonathan.leechpepin@gmail.com> | 2014-11-20 12:59:17 -0500 |
---|---|---|
committer | Jonathan Leech-Pepin <jonathan.leechpepin@gmail.com> | 2014-11-20 12:59:17 -0500 |
commit | 2e2619d7b1ec9a5d7338c5ec224ac0ba920e017c (patch) | |
tree | df786720558379093a4bf27c7c5d51410fae5a20 /sx-auth.el | |
parent | 97dae4030bcfb3062bd0909f471f41b5967c88d2 (diff) |
Improve method for returning clean filter.
Logic now verifies `include` if `include`,`exclude`,`base` is used.
Otherwise verify entire filter.
Diffstat (limited to 'sx-auth.el')
-rw-r--r-- | sx-auth.el | 33 |
1 files changed, 21 insertions, 12 deletions
@@ -131,22 +131,31 @@ If it has `auth-required' SUBMETHODs, or no submethod, return t." "Check if FILTER contains properties that require authentication. If it has `auth-required' properties, return a filter that has removed those properties." - (let ((auth-filters (cl-remove-if #'nil - ;; Only retrieve the elements that - ;; are issues. - (mapcar (lambda (prop) - (car - (member prop - sx-auth-filter-auth))) - filter))) - (clean-filter)) - ;; Auth-filters is the filters that are issues + (let* ((incl-filter (if (listp filter) (car filter))) + (rest-filter (if incl-filter (cdr filter))) + (auth-filters (cl-remove-if #'nil + ;; Only retrieve the elements that + ;; are issues. + (mapcar (lambda (prop) + (car + (member prop + sx-auth-filter-auth))) + (or incl-filter filter)))) + clean-filter out-filter) + (lwarn "sx-auth filter" :debug "Filter: %S" filter) + ;; Auth-filters is the filters that are issues (when auth-filters (setq clean-filter (cl-remove-if (lambda (prop) (member prop auth-filters)) - filter))) - clean-filter)) + (or incl-filter filter)))) + (if (and incl-filter clean-filter) + (setq out-filter + (cons clean-filter rest-filter)) + (setq out-filter clean-filter)) + (lwarn "sx-auth filter2" :debug "Filter property %s requires auth. %S" + auth-filters out-filter) + out-filter)) (provide 'sx-auth) ;;; sx-auth.el ends here |