Skip to content

Commit

Permalink
Make admin role to bypass auth logic
Browse files Browse the repository at this point in the history
  • Loading branch information
yu74n committed Nov 1, 2017
1 parent afd2bca commit 26b818c
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 9 deletions.
6 changes: 6 additions & 0 deletions conf/zeppelin-site.xml.template
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,12 @@
<description>Anonymous user allowed by default</description>
</property>

<property>
<name>zeppelin.owner.role</name>
<value>admin</value>
<description>Set owner role by default in private mode</description>
</property>

<property>
<name>zeppelin.notebook.public</name>
<value>true</value>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,8 @@ public static enum ConfVars {
ZEPPELIN_INTERPRETER_LIFECYCLE_MANAGER_TIMEOUT_CHECK_INTERVAL(
"zeppelin.interpreter.lifecyclemanager.timeout.checkinterval", 6000L),
ZEPPELIN_INTERPRETER_LIFECYCLE_MANAGER_TIMEOUT_THRESHOLD(
"zeppelin.interpreter.lifecyclemanager.timeout.threshold", 3600000L);
"zeppelin.interpreter.lifecyclemanager.timeout.threshold", 3600000L),
ZEPPELIN_OWNER_ROLE("zeppelin.owner.role", "admin");

private String varName;
@SuppressWarnings("rawtypes")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
Expand All @@ -35,6 +34,7 @@

import org.apache.commons.lang.StringUtils;
import org.apache.zeppelin.conf.ZeppelinConfiguration;
import org.apache.zeppelin.conf.ZeppelinConfiguration.ConfVars;
import org.apache.zeppelin.user.AuthenticationInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -293,24 +293,32 @@ public Set<String> getWriters(String noteId) {
}

public boolean isOwner(String noteId, Set<String> entities) {
return isMember(entities, getOwners(noteId));
return isMember(entities, getOwners(noteId)) || isAdmin(entities);
}

public boolean isWriter(String noteId, Set<String> entities) {
return isMember(entities, getWriters(noteId)) || isMember(entities, getOwners(noteId));
return isMember(entities, getWriters(noteId)) ||
isMember(entities, getOwners(noteId)) ||
isAdmin(entities);
}

public boolean isReader(String noteId, Set<String> entities) {
return isMember(entities, getReaders(noteId)) ||
isMember(entities, getOwners(noteId)) ||
isMember(entities, getWriters(noteId)) ||
isMember(entities, getRunners(noteId));
isMember(entities, getOwners(noteId)) ||
isMember(entities, getWriters(noteId)) ||
isMember(entities, getRunners(noteId)) ||
isAdmin(entities);
}

public boolean isRunner(String noteId, Set<String> entities) {
return isMember(entities, getRunners(noteId)) ||
isMember(entities, getWriters(noteId)) ||
isMember(entities, getOwners(noteId));
isMember(entities, getWriters(noteId)) ||
isMember(entities, getOwners(noteId)) ||
isAdmin(entities);
}

private boolean isAdmin(Set<String> entities) {
return entities.contains(conf.getString(ConfVars.ZEPPELIN_OWNER_ROLE));
}

// return true if b is empty or if (a intersection b) is non-empty
Expand Down

0 comments on commit 26b818c

Please sign in to comment.