[PD2] Client done except jwt token, login and register functions
This commit is contained in:
parent
c94831d0a2
commit
78031d8e70
16 changed files with 698 additions and 337 deletions
|
@ -226,11 +226,6 @@ func (ds DataStore) userExists(uid string) bool {
|
|||
}
|
||||
|
||||
func (ds DataStore) storeUserCertIfNotExists(uid string, cert x509.Certificate) error {
|
||||
// Check if the user already exists
|
||||
if ds.userExists(uid) {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Insert the user certificate
|
||||
insertQuery := `
|
||||
INSERT INTO users (UID, userCert)
|
||||
|
|
|
@ -3,6 +3,7 @@ package server
|
|||
import (
|
||||
"PD2/internal/protocol"
|
||||
"PD2/internal/utils/cryptoUtils"
|
||||
"crypto/x509"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
@ -20,20 +21,58 @@ func HandleGetUserCert(c *gin.Context, dataStore DataStore) {
|
|||
}
|
||||
}
|
||||
|
||||
func HandleGetUnreadMsgsInfo(c *gin.Context, dataStore DataStore) {
|
||||
func HandleStoreUserCert(c *gin.Context, dataStore DataStore) {
|
||||
user := c.Param("user")
|
||||
|
||||
var getUnreadMsgsInfo protocol.GetUnreadMsgsInfo
|
||||
if err := c.BindJSON(getUnreadMsgsInfo); err != nil {
|
||||
var storeUserCert protocol.StoreUserCert
|
||||
if err := c.Bind(storeUserCert); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
if getUnreadMsgsInfo.Page <= 0 || getUnreadMsgsInfo.PageSize <= 0 {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Page and PageSize need to be >= 1"})
|
||||
userCert, err := x509.ParseCertificate(storeUserCert.Certificate)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "User certificate is invalid"})
|
||||
return
|
||||
}
|
||||
unreadMsgsInfo, err := dataStore.GetUnreadMsgsInfo(user, getUnreadMsgsInfo.Page, getUnreadMsgsInfo.PageSize)
|
||||
|
||||
err = dataStore.storeUserCertIfNotExists(user, *userCert)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "User already has a certificate stored in the database"})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, gin.H{})
|
||||
}
|
||||
|
||||
func HandleGetUnreadMsgsInfo(c *gin.Context, dataStore DataStore) {
|
||||
user := c.Param("user")
|
||||
pageStr := c.Query("page")
|
||||
pagesizeStr := c.Query("pagesize")
|
||||
|
||||
var page int
|
||||
var err error
|
||||
if pageStr != "" {
|
||||
page, err = strconv.Atoi(pageStr)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Page is not a number"})
|
||||
}
|
||||
} else {
|
||||
page = 1
|
||||
}
|
||||
var pagesize int
|
||||
if pagesizeStr != "" {
|
||||
pagesize, err = strconv.Atoi(pagesizeStr)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Pagesize is not a number"})
|
||||
}
|
||||
} else {
|
||||
pagesize = 5
|
||||
}
|
||||
|
||||
if page <= 0 || pagesize <= 0 {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "Page and Pagesize need to be >= 1"})
|
||||
return
|
||||
}
|
||||
unreadMsgsInfo, err := dataStore.GetUnreadMsgsInfo(user, page, pagesize)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
|
@ -115,15 +154,19 @@ func Run() {
|
|||
HandleSendMessage(c, dataStore)
|
||||
})
|
||||
|
||||
r.POST("/cert/:user", func(c *gin.Context) {
|
||||
HandleStoreUserCert(c, dataStore)
|
||||
})
|
||||
|
||||
server := http.Server{
|
||||
Addr: "0.0.0.0:8080",
|
||||
Handler: r,
|
||||
//TODO: Verify if it's the gateway
|
||||
Addr: "0.0.0.0:8080",
|
||||
Handler: r,
|
||||
//TODO: Verify if it's the gateway
|
||||
TLSConfig: serverKeyStore.GetServerTLSConfig(),
|
||||
}
|
||||
|
||||
err = server.ListenAndServeTLS("", "")
|
||||
if err!=nil {
|
||||
log.Fatal(err.Error())
|
||||
}
|
||||
if err != nil {
|
||||
log.Fatal(err.Error())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue