Skip to content

Instantly share code, notes, and snippets.

@jocoonopa
Created August 7, 2019 02:00
Show Gist options
  • Save jocoonopa/d17e994cc1face4d27440e6798a8a209 to your computer and use it in GitHub Desktop.
Save jocoonopa/d17e994cc1face4d27440e6798a8a209 to your computer and use it in GitHub Desktop.
Report Server Entry
import groovy.sql.Sql
import groovy.xml.*
import net.datenwerke.security.service.authenticator.AuthenticatorService
def authservice = GLOBALS.getInstance(AuthenticatorService.class)
def tenantId = httpRequest.getParameter("tenant_id")
def biToken = httpRequest.getParameter("bi_token")
def dbURL = "jdbc:mysql://localhost:3306/dbuser"
def dbUserName = "dbuser"
def dbPassword = "dbPassword"
def dbDriver = "com.mysql.jdbc.Driver"
def systemDbConnection = Sql.newInstance(dbURL,dbUserName,dbPassword,dbDriver)
def website = systemDbConnection.firstRow("SELECT websites.* FROM websites LEFT JOIN acds ON acds.id = websites.acd_id WHERE acds.center_id = " + tenantId)
def uuid = website.uuid
systemDbConnection.close()
def user = null
if (authservice.isAuthenticated()) {
user = authservice.getCurrentUser()
} else {
def dbTenantUrl = "jdbc:mysql://localhost:3306/" + uuid
def tenantDbConnection = Sql.newInstance(dbTenantUrl, dbUserName, dbPassword, dbDriver)
def apUser = tenantDbConnection.firstRow("SELECT users.* FROM users WHERE bi_token = '" + biToken + "'")
tenantDbConnection.close()
if (apUser) {
user = GLOBALS.getEntityManager().createQuery("FROM User WHERE lower(username) = :name")
.setParameter("name", apUser.name.toLowerCase())
.getSingleResult()
authservice.setAuthenticated(user.getId())
} else {
def writer = new StringWriter()
new MarkupBuilder(writer).html {
head {
title ("404")
}
body {
h1("User Not Found!")
}
}
return writer.toString()
}
}
def url = "https://01.firstline.cc:8443/rs/reportserver/reportexport"
def redirectUrl = url + "?id=" + httpRequest.getParameter("report_id") + "&p_tenant_id=" + httpRequest.getParameter("tenant_id") + "&" + httpRequest.getQueryString() + "&download=false"
// For debug, don't remove
/*
def writer = new StringWriter()
new MarkupBuilder(writer).html {
head {
title ("UserId")
}
body {
h1("UserId: " + uuid + "\n\n" + user.getId())
h5(url + "?id=" + httpRequest.getParameter("report_id") + "&" + httpRequest.getQueryString())
h6(user.getUsername())
}
}
writer.toString()
*/
/* redirect */
httpResponse.sendRedirect(redirectUrl)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment