001package org.kepler.webview.server.auth; 002 003import java.nio.charset.StandardCharsets; 004 005import io.vertx.core.AsyncResult; 006import io.vertx.core.Future; 007import io.vertx.core.Handler; 008import io.vertx.core.buffer.Buffer; 009import io.vertx.core.json.JsonObject; 010import io.vertx.ext.auth.AbstractUser; 011import io.vertx.ext.auth.AuthProvider; 012 013public class NoneUser extends AbstractUser { 014 015 public NoneUser() {} 016 017 public NoneUser(String username, String group) { 018 _group = group; 019 _username = username; 020 } 021 022 @Override 023 public JsonObject principal() { 024 return new JsonObject().put("username", _username) 025 .put("fullname", _username) 026 .put("groups", _group); 027 } 028 029 /** Do nothing. */ 030 @Override 031 public void setAuthProvider(AuthProvider arg0) { 032 } 033 034 @Override 035 protected void doIsPermitted(String authority, 036 Handler<AsyncResult<Boolean>> permittedHandler) { 037 // Everything is authorized. 038 permittedHandler.handle(Future.succeededFuture(Boolean.TRUE)); 039 } 040 041 @Override 042 public int readFromBuffer(int pos, Buffer buffer) { 043 pos = super.readFromBuffer(pos, buffer); 044 045 int groupLength = buffer.getInt(pos); 046 pos += 4; 047 byte[] groupBytes = buffer.getBytes(pos, pos + groupLength); 048 pos += groupLength; 049 _group = new String(groupBytes, StandardCharsets.UTF_8); 050 051 int usernameLength = buffer.getInt(pos); 052 pos += 4; 053 byte[] usernameBytes = buffer.getBytes(pos, pos + usernameLength); 054 pos += usernameLength; 055 _username = new String(usernameBytes, StandardCharsets.UTF_8); 056 057 return pos; 058 } 059 060 @Override 061 public void writeToBuffer(Buffer buffer) { 062 super.writeToBuffer(buffer); 063 byte[] groupBytes = _group.getBytes(StandardCharsets.UTF_8); 064 buffer.appendInt(groupBytes.length).appendBytes(groupBytes); 065 byte[] userBytes = _username.getBytes(StandardCharsets.UTF_8); 066 buffer.appendInt(userBytes.length).appendBytes(userBytes); 067 } 068 069 private String _group; 070 private String _username; 071}