From 2e2619d7b1ec9a5d7338c5ec224ac0ba920e017c Mon Sep 17 00:00:00 2001 From: Jonathan Leech-Pepin Date: Thu, 20 Nov 2014 12:59:17 -0500 Subject: Improve method for returning clean filter. Logic now verifies `include` if `include`,`exclude`,`base` is used. Otherwise verify entire filter. --- sx-auth.el | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) (limited to 'sx-auth.el') diff --git a/sx-auth.el b/sx-auth.el index bd8c206..e67f9a1 100644 --- a/sx-auth.el +++ b/sx-auth.el @@ -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 -- cgit v1.2.3