Added functionality to user page
This commit is contained in:
@ -9,6 +9,7 @@ import (
|
||||
"github.com/fossyy/filekeeper/utils"
|
||||
signinView "github.com/fossyy/filekeeper/view/signin"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var log *logger.AggregatedLogger
|
||||
@ -64,8 +65,21 @@ func POST(w http.ResponseWriter, r *http.Request) {
|
||||
Authenticated: true,
|
||||
}
|
||||
|
||||
userAgent := r.Header.Get("User-Agent")
|
||||
browserInfo, osInfo := parseUserAgent(userAgent)
|
||||
|
||||
sessionInfo := session.SessionInfo{
|
||||
SessionID: storeSession.ID,
|
||||
Browser: browserInfo["browser"],
|
||||
Version: browserInfo["version"],
|
||||
OS: osInfo["os"],
|
||||
OSVersion: osInfo["version"],
|
||||
IP: utils.ClientIP(r),
|
||||
Location: "Indonesia",
|
||||
}
|
||||
|
||||
storeSession.Save(w)
|
||||
session.AppendSession(email, storeSession)
|
||||
session.AppendSession(email, &sessionInfo)
|
||||
|
||||
cookie, err := r.Cookie("redirect")
|
||||
if errors.Is(err, http.ErrNoCookie) {
|
||||
@ -90,3 +104,64 @@ func POST(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func parseUserAgent(userAgent string) (map[string]string, map[string]string) {
|
||||
browserInfo := make(map[string]string)
|
||||
osInfo := make(map[string]string)
|
||||
if strings.Contains(userAgent, "Firefox") {
|
||||
browserInfo["browser"] = "Firefox"
|
||||
parts := strings.Split(userAgent, "Firefox/")
|
||||
if len(parts) > 1 {
|
||||
version := strings.Split(parts[1], " ")[0]
|
||||
browserInfo["version"] = version
|
||||
}
|
||||
} else if strings.Contains(userAgent, "Chrome") {
|
||||
browserInfo["browser"] = "Chrome"
|
||||
parts := strings.Split(userAgent, "Chrome/")
|
||||
if len(parts) > 1 {
|
||||
version := strings.Split(parts[1], " ")[0]
|
||||
browserInfo["version"] = version
|
||||
}
|
||||
} else {
|
||||
browserInfo["browser"] = "Unknown"
|
||||
browserInfo["version"] = "Unknown"
|
||||
}
|
||||
|
||||
if strings.Contains(userAgent, "Windows") {
|
||||
osInfo["os"] = "Windows"
|
||||
parts := strings.Split(userAgent, "Windows ")
|
||||
if len(parts) > 1 {
|
||||
version := strings.Split(parts[1], ";")[0]
|
||||
osInfo["version"] = version
|
||||
}
|
||||
} else if strings.Contains(userAgent, "Macintosh") {
|
||||
osInfo["os"] = "Mac OS"
|
||||
parts := strings.Split(userAgent, "Mac OS X ")
|
||||
if len(parts) > 1 {
|
||||
version := strings.Split(parts[1], ";")[0]
|
||||
osInfo["version"] = version
|
||||
}
|
||||
} else if strings.Contains(userAgent, "Linux") {
|
||||
osInfo["os"] = "Linux"
|
||||
osInfo["version"] = "Unknown"
|
||||
} else if strings.Contains(userAgent, "Android") {
|
||||
osInfo["os"] = "Android"
|
||||
parts := strings.Split(userAgent, "Android ")
|
||||
if len(parts) > 1 {
|
||||
version := strings.Split(parts[1], ";")[0]
|
||||
osInfo["version"] = version
|
||||
}
|
||||
} else if strings.Contains(userAgent, "iPhone") || strings.Contains(userAgent, "iPad") || strings.Contains(userAgent, "iPod") {
|
||||
osInfo["os"] = "iOS"
|
||||
parts := strings.Split(userAgent, "OS ")
|
||||
if len(parts) > 1 {
|
||||
version := strings.Split(parts[1], " ")[0]
|
||||
osInfo["version"] = version
|
||||
}
|
||||
} else {
|
||||
osInfo["os"] = "Unknown"
|
||||
osInfo["version"] = "Unknown"
|
||||
}
|
||||
|
||||
return browserInfo, osInfo
|
||||
}
|
||||
|
@ -34,7 +34,8 @@ func GET(w http.ResponseWriter, r *http.Request) {
|
||||
log.Error(err.Error())
|
||||
return
|
||||
}
|
||||
component := userView.Main("User Page", userSession.Email, userSession.Username)
|
||||
|
||||
component := userView.Main("User Page", userSession.Email, userSession.Username, session.UserSessions[userSession.Email])
|
||||
err = component.Render(r.Context(), w)
|
||||
if err != nil {
|
||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||
|
Reference in New Issue
Block a user