diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/util/UserUtil.java')
-rw-r--r-- | src/main/java/org/openslx/imagemaster/util/UserUtil.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/imagemaster/util/UserUtil.java b/src/main/java/org/openslx/imagemaster/util/UserUtil.java new file mode 100644 index 0000000..2e447f3 --- /dev/null +++ b/src/main/java/org/openslx/imagemaster/util/UserUtil.java @@ -0,0 +1,62 @@ +package org.openslx.imagemaster.util; + +import java.sql.SQLException; + +import org.openslx.bwlp.thrift.iface.AuthorizationError; +import org.openslx.bwlp.thrift.iface.Role; +import org.openslx.bwlp.thrift.iface.TAuthorizationException; +import org.openslx.bwlp.thrift.iface.TNotFoundException; +import org.openslx.bwlp.thrift.iface.UserInfo; +import org.openslx.imagemaster.db.mappers.DbUser; + +public class UserUtil +{ + + /** + * Given a list of users, return the first one that isn't anonymous, which means they opted in + * for global image sharing. + */ + public static UserInfo getFirstPublishingUser( UserInfo... user ) + { + if ( user == null ) + return null; + for ( UserInfo u : user ) { + if ( Util.isEmpty( u.userId ) ) + continue; + try { + u = DbUser.getUserInfo( u.userId ); + } catch ( SQLException | TNotFoundException e ) { + continue; + } + if ( !Util.isEmpty( u.eMail ) + && ( !Util.isEmpty( u.firstName ) || !Util.isEmpty( u.lastName ) ) ) { + return u; + } + } + return null; + } + + /** + * Given a list of users, return the first one that isn't anonymous, which means they opted in + * for global image sharing. If none matches, return the dummy user. + */ + public static UserInfo getFirstPublishingUserOrDummy( UserInfo... user ) + { + UserInfo ret = getFirstPublishingUser( user ); + if ( ret != null ) + return ret; + try { + return DbUser.getUserInfo( "dummy" ); + } catch ( TNotFoundException | SQLException e ) { + return null; + } + } + + public static void assertTutor( UserInfo userInfo ) throws TAuthorizationException + { + if ( userInfo == null || userInfo.role != Role.TUTOR ) { + throw new TAuthorizationException( AuthorizationError.NO_PERMISSION, "Permission denied!" ); + } + } + +} |