nu.t4.beans.APLManager.java Source code

Java tutorial

Introduction

Here is the source code for nu.t4.beans.APLManager.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package nu.t4.beans;

import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Arrays;
import java.util.Base64;
import java.util.Objects;
import javax.ejb.Stateless;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import org.mindrot.jbcrypt.BCrypt;

/**
 *
 * @author Daniel Nilsson
 */
@Stateless
public class APLManager {

    //ID fr vr app
    private final String CLIENT_ID = "550162747744-m4r2h8egnvqicsbhoefdlo54lk8q399n.apps.googleusercontent.com";

    public boolean registerGoogleUser(String googleID, String namn, int klass, String tfnr, String email) {
        try {
            Connection conn = ConnectionFactory.getConnection();
            Statement stmt = conn.createStatement();
            String sql = String.format(
                    "INSERT INTO skolans_anvndare VALUES" + "('%s',null,'%s','%s','%s',%d,null,1,0)", googleID,
                    namn, tfnr, email, klass);
            stmt.execute(sql);

            conn.close();
            return true;
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return false;
        }
    }

    public GoogleIdToken.Payload googleAuth(String idTokenString) {
        //Varibler fr verifiering
        HttpTransport httpTransport;
        JsonFactory jsonFactory;
        GoogleIdTokenVerifier verifier;
        try {
            jsonFactory = JacksonFactory.getDefaultInstance();
            httpTransport = GoogleNetHttpTransport.newTrustedTransport();
            verifier = new GoogleIdTokenVerifier.Builder(httpTransport, jsonFactory)
                    .setAudience(Arrays.asList(CLIENT_ID)).build();
        } catch (Exception e) {
            return null;
        }
        GoogleIdToken idToken;
        try {
            idToken = verifier.verify(idTokenString);
        } catch (Exception ex) {
            return null;
        }

        //idToken blir null ifall den r felaktig
        if (idToken != null) {
            //Ta ut datan vi behver frn det verifierade idTokenet
            return idToken.getPayload();
            //if (payload.getHostedDomain().equals(APPS_DOMAIN_NAME)) {
            /*
            } else {
            return Response.status(Response.Status.FORBIDDEN).build();
            }*/
        } else {
            return null;
        }
    }

    public boolean handledarAuth(String basic_auth) {
        try {

            basic_auth = basic_auth.substring(basic_auth.indexOf(" ") + 1, basic_auth.length());

            byte[] decoded = Base64.getDecoder().decode(basic_auth);
            String userPass = new String(decoded);

            String anvandarnamn = userPass.substring(0, userPass.indexOf(":"));
            String losenord = userPass.substring(userPass.indexOf(":") + 1, userPass.length());

            Connection conn = ConnectionFactory.getConnection();
            Statement stmt = conn.createStatement();
            String sql = String.format("SELECT * FROM handledare WHERE anvndarnamn = '%s'", anvandarnamn);
            System.out.println(sql);
            ResultSet result = stmt.executeQuery(sql);
            result.next();
            if (BCrypt.checkpw(losenord, result.getString("lsenord"))) {
                conn.close();
                return true;
            } else {
                conn.close();
                return false;
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return false;
        }
    }

    public JsonObject getGoogleUser(String google_id) {
        try {
            Connection conn = ConnectionFactory.getConnection();
            Statement stmt = conn.createStatement();
            String sql = String.format("SELECT * FROM skolans_anvndare WHERE google_id = '%s'", google_id);
            ResultSet result = stmt.executeQuery(sql);
            result.next();
            JsonObjectBuilder obuilder = Json.createObjectBuilder();
            obuilder.add("id", result.getInt("id")).add("namn", result.getString("namn"))
                    .add("tfnr", result.getString("Telefonnummer")).add("email", result.getString("email"))
                    .add("klass", result.getInt("klass")).add("handledare_ID", result.getInt("handledare_ID"))
                    .add("senast_inloggad", result.getInt("senast_inloggad"))
                    .add("behrighet", result.getInt("behrighet"));
            conn.close();
            return obuilder.build();
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return null;
        }
    }

    boolean deleteUser(String key, boolean googleUser) {
        try {
            Connection conn = ConnectionFactory.getConnection();
            Statement stmt = conn.createStatement();
            String sql;
            if (googleUser) {
                sql = String.format("DELETE FROM skolans_anvndare WHERE google_id = '%s'", key);
            } else {
                sql = String.format("DELETE FROM handledare WHERE anvndarnamn = '%s'", key);
            }
            stmt.executeUpdate(sql);
            conn.close();
            return true;
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return false;
        }
    }

public boolean registerHandledare(String anvndarnamn, String namn, String lsenord, String tfnr, String email, int program_id, String foretag) {
    try {
        Connection conn = ConnectionFactory.getConnection();
        Statement stmt = conn.createStatement();
        String encrypted_lsenord = BCrypt.hashpw(lsenord, BCrypt.gensalt());
        String sql = String.format(
                "INSERT INTO handledare VALUES"
                + "(null, '%s','%s','%s','%s','%s', %d, '%s')",
                namn, anvndarnamn, email, encrypted_lsenord, tfnr, program_id, foretag
        );
        stmt.executeUpdate(sql);

        conn.close();
        return true;
    } catch (Exception e) {
        System.out.println(e.getMessage());
        return false;
    }
}

    public JsonArray getKlasser() {
        try {
            Connection conn = ConnectionFactory.getConnection();
            Statement stmt = conn.createStatement();
            String sql = String.format("SELECT * FROM klass");
            ResultSet data = stmt.executeQuery(sql);
            JsonArrayBuilder jBuilder = Json.createArrayBuilder();

            while (data.next()) {
                jBuilder.add(Json.createObjectBuilder().add("id", data.getInt("id"))
                        .add("namn", data.getString("namn")).build());
            }

            conn.close();
            return jBuilder.build();
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return null;
        }
    }

    public boolean postLogg(int id, String innehall, String datum, int ljus, String bild) {
        try {
            Connection conn = ConnectionFactory.getConnection();
            Statement stmt = (Statement) conn.createStatement();
            String sql = "";
            if (bild != null) {
                sql = String.format("INSERT INTO loggbok VALUES " + "(null,%d,'%s',%d,'%s','%s',0)", id, innehall,
                        ljus, datum, bild);
            } else {
                sql = String.format("INSERT INTO loggbok VALUES " + "(null,%d,'%s',%d,'%s',null,0)", id, innehall,
                        ljus, datum);
            }
            stmt.executeUpdate(sql);
            conn.close();
            return true;

        } catch (Exception e) {
            System.out.println(e.getMessage());
            return false;
        }
    }

    boolean deleteLogg(int id, String datum) {
        try {
            Connection conn = ConnectionFactory.getConnection();
            Statement stmt = conn.createStatement();
            String sql;
            sql = String.format("DELETE FROM loggbok WHERE " + "elev_id = %d AND datum = '%s'", id, datum);
            stmt.executeUpdate(sql);
            conn.close();
            return true;
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return false;
        }
    }

    public int getHandledarId(String basic_auth) {
        try {

            basic_auth = basic_auth.substring(basic_auth.indexOf(" ") + 1, basic_auth.length());

            byte[] decoded = Base64.getDecoder().decode(basic_auth);
            String userPass = new String(decoded);

            String anvandarnamn = userPass.substring(0, userPass.indexOf(":"));

            Connection conn = ConnectionFactory.getConnection();
            Statement stmt = conn.createStatement();
            String sql = String.format("SELECT id FROM handledare WHERE anvndarnamn = '%s'", anvandarnamn);
            ResultSet result = stmt.executeQuery(sql);
            result.next();
            int id = result.getInt("id");
            conn.close();
            return id;
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return -1;
        }
    }
}