package budgetforce.control.resources;
// <editor-fold defaultstate="collapsed" desc="imports">
import budgetforce.model.login.Login;
import budgetforce.control.login.LoginController;
import budgetforce.control.login.LoginTokenController;
import budgetforce.model.DatabaseManager;
import budgetforce.model.login.DoLogin;
import budgetforce.model.login.TransToken;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import javax.ws.rs.core.Response;
import javax.ws.rs.PathParam;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.DELETE;
import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;
// </editor-fold>
/**
* REST Web Service
*
* @author David König
*/
@Path("/login")
public class LoginResource {
public LoginResource()
{
}
//first you have to get an login token, which is 2 minutes valid, after that time you have to get a new one
@GET
@Path("/logintoken")
@Produces("application/json")
public String getloginToken()
{
LoginTokenController loginTokenController = new LoginTokenController();
String test = loginTokenController.getLoginToken();
return test;
}
// client sends login token, authentification token and username
@POST
@Path("dologin")
@Produces("application/json")
@Consumes("application/json")
public String doLogin(DoLogin _DoLogin) throws NoSuchAlgorithmException
{
TransToken transToken = new TransToken();
LoginController loginController = new LoginController();
// check if the login is successful, if yes, get trans token and return it
boolean login = loginController.loginSuccessful(_DoLogin.getLoginToken(), _DoLogin.getAuthToken(), _DoLogin.getUsername());
if(login)
{
transToken = loginController.getTransToken();
}
else
{
transToken.setToken("error");
}
return transToken.getToken();
}
//post for creating a new entry
@POST
@Path("/create")
@Consumes("application/json")
@Produces("application/json")
public Response postLogin(Login _Login)
{
int id = DatabaseManager.getDatabaseManager().insertLogin(_Login);
_Login.setId(id);
return Response.status(201).entity(_Login).build();
}
//put for updating an entry
@PUT
@Path("/update/{id}")
@Consumes("application/json")
@Produces("application/json")
public Response putLogin(@PathParam("id") Integer _Id, Login _Login)
{
_Login.setId(_Id);
boolean successful = DatabaseManager.getDatabaseManager().updateLogin(_Login);
return Response.status(201).entity(successful).build();
}
// later only the user can delete his acount by himself, the same at updating
@DELETE
@Path("/delete/{username}")
@Consumes("application/json")
@Produces("application/json")
public Response deleteLogin(@PathParam("id") String _Username)
{
boolean successful = DatabaseManager.getDatabaseManager().deleteLogin(_Username);
return Response.status(201).entity(successful).build();
}
}