added logger for grouptasks and system
parent
a6c9eb2900
commit
43a25f817b
|
@ -0,0 +1,11 @@
|
|||
[
|
||||
{
|
||||
"id": 0,
|
||||
"languages": [
|
||||
{
|
||||
"lang": "en",
|
||||
"message": "%userId% has started group tasks"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
|
@ -0,0 +1,103 @@
|
|||
{"Id":0,"Time":"2023-06-26T14:40:53.344359537+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:40:54.388697469+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:41:08.397273014+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:41:09.059905327+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:44:00.704064229+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:44:00.757018863+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:48:22.373511048+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:48:23.113997674+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:48:32.581372985+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:48:33.399112571+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:53:21.353456966+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:53:21.392168992+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:53:42.372417807+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:53:42.479579138+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:53:53.388534593+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T14:53:53.569891973+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:15:55.476845699+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:15:55.562110779+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:18:00.139081715+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:18:00.188060672+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:20:56.252674262+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:20:56.322052586+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:21:34.183104637+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:21:34.238983689+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:21:47.901594058+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:21:47.957861269+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:21:55.00618043+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:21:55.094324945+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:28:17.378472657+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:28:17.442670752+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:46:42.852109566+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:46:44.117866181+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:51:04.075699656+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:51:04.139294474+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:53:33.812822579+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:53:55.750431162+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:54:23.509249057+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:54:32.489746458+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:54:42.425441725+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T15:56:05.308186703+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:01:23.072004383+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:01:46.172679342+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:03:39.737390245+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:04:05.088615344+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:04:21.533500276+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:05:02.034541248+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:05:06.571337816+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:15:54.596922828+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:15:54.663200369+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:16:58.723786041+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:16:58.778960869+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:17:14.941884767+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:23:21.562944663+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:23:22.371236719+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:23:38.205995944+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:23:44.81232114+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:25:37.248649355+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:25:37.80611411+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:25:46.934383621+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:25:47.015168493+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:26:23.528932114+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:27:19.857060312+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:31:50.791041651+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:37:07.810002714+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:37:08.514678749+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:59:33.232327496+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T16:59:33.85629423+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:15:41.86545891+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:15:41.935428528+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:15:43.062270121+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:15:43.859232118+02:00","Type":0,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:19:02.902554585+02:00","Type":1,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:19:02.952776992+02:00","Type":1,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:19:03.001309906+02:00","Type":1,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:19:03.040355365+02:00","Type":1,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:19:58.303858277+02:00","Type":3,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:19:58.826549462+02:00","Type":3,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:19:58.869519116+02:00","Type":3,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:19:59.210307836+02:00","Type":3,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:20:17.84431075+02:00","Type":2,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:20:17.898623303+02:00","Type":2,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:20:17.985769915+02:00","Type":2,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:20:18.049521892+02:00","Type":2,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:25:10.872894974+02:00","Type":2,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:25:26.032539587+02:00","Type":2,"Messages":[{"Type":"user","Value":"Alex"},{"Type":"role","Value":"Test"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:28:51.958849106+02:00","Type":2,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:28:52.051645006+02:00","Type":2,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:28:52.0958333+02:00","Type":2,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:29:09.128923843+02:00","Type":2,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:29:09.179518658+02:00","Type":2,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:29:10.007487297+02:00","Type":2,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:29:23.009030867+02:00","Type":0,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:29:23.079119037+02:00","Type":0,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:29:23.146551593+02:00","Type":0,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:35:05.91026836+02:00","Type":0,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:35:06.030515145+02:00","Type":0,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:35:07.115992125+02:00","Type":0,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:35:07.803301779+02:00","Type":0,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T17:35:39.912754022+02:00","Type":0,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T18:49:59.589837134+02:00","Type":0,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T19:00:39.906990709+02:00","Type":0,"Messages":[{"Type":"username","Value":"Alex"}]}
|
||||
{"Id":0,"Time":"2023-06-26T19:03:21.070788107+02:00","Type":0,"Messages":[{"Type":"userId","Value":"34a2e968-8769-4794-97f9-8134db97d50f"}]}
|
||||
{"Id":0,"Time":"2023-06-26T19:03:21.109272654+02:00","Type":0,"Messages":[{"Type":"userId","Value":"34a2e968-8769-4794-97f9-8134db97d50f"}]}
|
1
main.go
1
main.go
|
@ -21,6 +21,7 @@ func init() {
|
|||
config.LoadConfig()
|
||||
logger.InitLogger()
|
||||
utils.ValidatorInit()
|
||||
logger.ReadLanguageLogMessages()
|
||||
systempermissions.InitSystemPermissions()
|
||||
grouptasks.LoadGroups("")
|
||||
database.InitDatabase()
|
||||
|
|
|
@ -37,13 +37,22 @@ func InitDatabase() {
|
|||
db.AutoMigrate(&structs.Role{})
|
||||
db.AutoMigrate(&structs.RolePermission{})
|
||||
|
||||
/* masterRoleId := handleMasterRolePermissions() */
|
||||
handleMasterRolePermissions()
|
||||
//createUser(masterRoleId)
|
||||
masterRoleId := handleMasterRolePermissions()
|
||||
//handleMasterRolePermissions()
|
||||
createDefaultAdminUser(masterRoleId)
|
||||
}
|
||||
|
||||
func createUser(masterRoleId string) {
|
||||
pw := []byte("haha")
|
||||
func createDefaultAdminUser(masterRoleId string) {
|
||||
var userCount int64
|
||||
DB.Model(&structs.User{}).Count(&userCount)
|
||||
|
||||
if userCount > 0 {
|
||||
return
|
||||
}
|
||||
|
||||
log.Info().Msg("No users found. Master account was created:")
|
||||
|
||||
pw := []byte("adminadmin")
|
||||
|
||||
hashedPassword, err := bcrypt.GenerateFromPassword(pw, bcrypt.DefaultCost)
|
||||
|
||||
|
@ -51,14 +60,19 @@ func createUser(masterRoleId string) {
|
|||
panic(err)
|
||||
}
|
||||
|
||||
DB.Create(&structs.User{
|
||||
user := structs.User{
|
||||
Id: uuid.New().String(),
|
||||
RoleId: masterRoleId,
|
||||
Username: "Alex",
|
||||
Email: "alex@roese.dev",
|
||||
Username: "admin",
|
||||
Email: "admin@roese.dev",
|
||||
Password: string(hashedPassword),
|
||||
CreatedAt: time.Now(),
|
||||
})
|
||||
}
|
||||
|
||||
DB.Create(&user)
|
||||
|
||||
log.Info().Msgf("Username: %s", user.Username)
|
||||
log.Info().Msgf("Password: %s", string(pw))
|
||||
}
|
||||
|
||||
func handleMasterRolePermissions() (roleId string) {
|
||||
|
|
|
@ -1,13 +1,33 @@
|
|||
package logger
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"janex/admin-dashboard-backend/modules/config"
|
||||
"janex/admin-dashboard-backend/modules/structs"
|
||||
"os"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
var systemLanguageLogMessages []structs.LanguageLogMessages
|
||||
var grouptasksLanguageLogMessages []structs.LanguageLogMessages
|
||||
|
||||
const (
|
||||
systemLogsRootPath = "./logs/system/"
|
||||
groupTasksLogsRootPath = "./logs/grouptasks/"
|
||||
|
||||
systemLanguageLogPath = "./system_lang_log_messages.json"
|
||||
grouptasksLanguageLogPath = "./grouptasks_lang_log_messages.json"
|
||||
)
|
||||
|
||||
func InitLogger() {
|
||||
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
|
||||
|
||||
|
@ -21,3 +41,176 @@ func InitLogger() {
|
|||
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: "15:04:05"})
|
||||
}
|
||||
}
|
||||
|
||||
func AddSystemLog(logMessage structs.LogMessage) {
|
||||
addLog(logMessage, true)
|
||||
}
|
||||
|
||||
func AddGroupTasksLog(logMessage structs.LogMessage) {
|
||||
addLog(logMessage, false)
|
||||
}
|
||||
|
||||
func addLog(logMessage structs.LogMessage, systemLog bool) {
|
||||
year, month, day := time.Now().Date()
|
||||
|
||||
path := systemLogsRootPath
|
||||
|
||||
if !systemLog {
|
||||
path = groupTasksLogsRootPath
|
||||
}
|
||||
|
||||
f, err := os.OpenFile(path+strconv.Itoa(day)+"-"+strconv.Itoa(int(month))+"-"+strconv.Itoa(year)+".json", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644)
|
||||
|
||||
if err != nil {
|
||||
log.Error().Msgf("Failed to open log file %s", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
defer f.Close()
|
||||
|
||||
logMessage.Time = time.Now()
|
||||
|
||||
file, _ := json.Marshal(logMessage)
|
||||
|
||||
if _, err = fmt.Fprintln(f, string(file)); err != nil {
|
||||
log.Error().Msgf("Failed to write to log file %s", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func ReadLogs(date string, systemLogs bool) []structs.LogMessageResponse {
|
||||
path := systemLogsRootPath
|
||||
|
||||
if !systemLogs {
|
||||
path = groupTasksLogsRootPath
|
||||
}
|
||||
|
||||
file, err := os.Open(path + date + ".json")
|
||||
|
||||
if err != nil {
|
||||
log.Error().Msgf("Failed to read log file %s", err.Error())
|
||||
return nil
|
||||
}
|
||||
|
||||
defer file.Close()
|
||||
|
||||
fileScanner := bufio.NewScanner(file)
|
||||
|
||||
var logMessages []structs.LogMessageResponse
|
||||
|
||||
for fileScanner.Scan() {
|
||||
var logMessage structs.LogMessage
|
||||
|
||||
if err := json.Unmarshal(fileScanner.Bytes(), &logMessage); err != nil {
|
||||
log.Error().Msgf("Failed to unmarshal log message %v", err.Error())
|
||||
}
|
||||
|
||||
var languageLogMessages []structs.LanguageLogMessages
|
||||
|
||||
if systemLogs {
|
||||
languageLogMessages = systemLanguageLogMessages
|
||||
} else {
|
||||
languageLogMessages = grouptasksLanguageLogMessages
|
||||
}
|
||||
|
||||
for _, systemLanguageLogMessage := range languageLogMessages {
|
||||
if logMessage.Id == systemLanguageLogMessage.Id {
|
||||
replacedLogMessage := systemLanguageLogMessage.Languages[0].Message
|
||||
|
||||
for _, message := range logMessage.Messages {
|
||||
replacedLogMessage = strings.ReplaceAll(replacedLogMessage, "%"+message.Type+"%", message.Value)
|
||||
}
|
||||
|
||||
logMessages = append(logMessages, structs.LogMessageResponse{
|
||||
Time: logMessage.Time,
|
||||
Type: logMessage.Type,
|
||||
Message: replacedLogMessage,
|
||||
})
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if err := fileScanner.Err(); err != nil {
|
||||
log.Error().Msgf("Error while reading file: %s", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
return logMessages
|
||||
}
|
||||
|
||||
func GetAllLogMessagesDates(systemLogs bool) []string {
|
||||
path := systemLogsRootPath
|
||||
|
||||
if !systemLogs {
|
||||
path = groupTasksLogsRootPath
|
||||
}
|
||||
|
||||
files, err := ioutil.ReadDir(path)
|
||||
|
||||
if err != nil {
|
||||
log.Error().Msgf("Failed to read log messages directory %s", err.Error())
|
||||
return []string{}
|
||||
}
|
||||
|
||||
var dates []string
|
||||
|
||||
for _, file := range files {
|
||||
dates = append(dates, strings.Split(file.Name(), ".")[0])
|
||||
}
|
||||
|
||||
layout := "2-1-2006"
|
||||
parsedDates := make([]time.Time, len(dates))
|
||||
|
||||
for i, dateStr := range dates {
|
||||
parsedDate, err := time.Parse(layout, dateStr)
|
||||
if err != nil {
|
||||
log.Error().Msgf("Failed to parse date %s", err.Error())
|
||||
return []string{}
|
||||
}
|
||||
|
||||
parsedDates[i] = parsedDate
|
||||
}
|
||||
|
||||
sort.Slice(parsedDates, func(i, j int) bool {
|
||||
return parsedDates[i].Before(parsedDates[j])
|
||||
})
|
||||
|
||||
sortedDates := []string{}
|
||||
|
||||
for _, date := range parsedDates {
|
||||
sortedDates = append(sortedDates, date.Format(layout))
|
||||
}
|
||||
|
||||
return sortedDates
|
||||
}
|
||||
|
||||
func ReadLanguageLogMessages() {
|
||||
readLanguageLogMessages(true)
|
||||
readLanguageLogMessages(false)
|
||||
}
|
||||
|
||||
func readLanguageLogMessages(systemLogs bool) {
|
||||
path := systemLanguageLogPath
|
||||
|
||||
if !systemLogs {
|
||||
path = grouptasksLanguageLogPath
|
||||
}
|
||||
|
||||
content, err := ioutil.ReadFile(path)
|
||||
|
||||
if err != nil {
|
||||
panic("Could not read language log messages: " + err.Error())
|
||||
}
|
||||
|
||||
var langLogMessages []structs.LanguageLogMessages
|
||||
|
||||
if err = json.Unmarshal(content, &langLogMessages); err != nil {
|
||||
panic("Failed to unmarshal: " + err.Error())
|
||||
}
|
||||
|
||||
if systemLogs {
|
||||
systemLanguageLogMessages = langLogMessages
|
||||
} else {
|
||||
grouptasksLanguageLogMessages = langLogMessages
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package structs
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type LogMessage struct {
|
||||
Id uint16
|
||||
Time time.Time
|
||||
Type uint8
|
||||
Messages []LogData
|
||||
}
|
||||
|
||||
type LogData struct {
|
||||
Type string
|
||||
Value string
|
||||
}
|
||||
|
||||
type LanguageLogMessages struct {
|
||||
Id uint16
|
||||
Languages []LanguageLogMessagesLanguage
|
||||
}
|
||||
|
||||
type LanguageLogMessagesLanguage struct {
|
||||
Lang string
|
||||
Message string
|
||||
}
|
||||
|
||||
type LogMessageResponse struct {
|
||||
Time time.Time
|
||||
Type uint8
|
||||
Message string
|
||||
}
|
|
@ -120,3 +120,8 @@ const (
|
|||
PermissionAdminAreaMoveRoleUpDown = _adminAreaRoles + "move_role_up_down"
|
||||
PermissionAdminAreaLogs = _adminArea + "logs"
|
||||
)
|
||||
|
||||
const (
|
||||
LogTypeInfo = 0
|
||||
LogTypeError = 1
|
||||
)
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
package logger
|
||||
|
||||
import (
|
||||
"janex/admin-dashboard-backend/modules/logger"
|
||||
"janex/admin-dashboard-backend/modules/structs"
|
||||
"janex/admin-dashboard-backend/modules/utils"
|
||||
"janex/admin-dashboard-backend/socketclients"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
)
|
||||
|
||||
func GetSystemLog(c *fiber.Ctx) error {
|
||||
t := c.Query("type")
|
||||
date := c.Query("date")
|
||||
|
||||
if t == "" || date == "" {
|
||||
return c.SendStatus(fiber.StatusBadRequest)
|
||||
}
|
||||
|
||||
if t == "g" && !socketclients.HasPermission(c.Locals("userId").(string), utils.PermissionGroupTasksHistory) || t == "s" && !socketclients.HasPermission(c.Locals("userId").(string), utils.PermissionAdminAreaLogs) {
|
||||
return c.SendStatus(fiber.StatusUnauthorized)
|
||||
}
|
||||
|
||||
if t == "g" { // grouptasks logs
|
||||
return c.JSON(struct {
|
||||
Logs []structs.LogMessageResponse
|
||||
Dates []string
|
||||
}{
|
||||
Logs: logger.ReadLogs(date, false),
|
||||
Dates: logger.GetAllLogMessagesDates(false),
|
||||
})
|
||||
}
|
||||
|
||||
// system logs
|
||||
return c.JSON(struct {
|
||||
Logs []structs.LogMessageResponse
|
||||
Dates []string
|
||||
}{
|
||||
Logs: logger.ReadLogs(date, true),
|
||||
Dates: logger.GetAllLogMessagesDates(true),
|
||||
})
|
||||
}
|
|
@ -5,6 +5,7 @@ import (
|
|||
"janex/admin-dashboard-backend/modules/structs"
|
||||
"janex/admin-dashboard-backend/modules/utils"
|
||||
"janex/admin-dashboard-backend/routers/router/api/v1/jxscanner"
|
||||
log "janex/admin-dashboard-backend/routers/router/api/v1/logger"
|
||||
"janex/admin-dashboard-backend/routers/router/api/v1/user"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
|
@ -24,6 +25,9 @@ func SetupRoutes(app *fiber.App) {
|
|||
s.Post("/scan", scannerSessionValidation, jxscanner.ScanResult)
|
||||
s.Delete("/", scannerSessionValidation, jxscanner.DeleteScanner)
|
||||
|
||||
l := v1.Group("/log")
|
||||
l.Get("/", userSessionValidation, log.GetSystemLog)
|
||||
|
||||
app.Static("/", "./public")
|
||||
}
|
||||
|
||||
|
|
|
@ -722,11 +722,13 @@ func AllUsersCreateNewUser(sessionId string, body map[string]interface{}) {
|
|||
Username string
|
||||
RoleId string
|
||||
ConnectionStatus uint8
|
||||
Deactivated bool
|
||||
}{
|
||||
Id: newUser.Id,
|
||||
Username: username,
|
||||
RoleId: roleId,
|
||||
ConnectionStatus: utils.ConnectionStateOffline,
|
||||
Deactivated: false,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
"janex/admin-dashboard-backend/modules/cache"
|
||||
"janex/admin-dashboard-backend/modules/database"
|
||||
"janex/admin-dashboard-backend/modules/grouptasks"
|
||||
"janex/admin-dashboard-backend/modules/logger"
|
||||
"janex/admin-dashboard-backend/modules/structs"
|
||||
"janex/admin-dashboard-backend/modules/utils"
|
||||
"janex/admin-dashboard-backend/socketclients"
|
||||
|
@ -86,6 +87,18 @@ func RunHub() {
|
|||
socketclients.UpdateConnectedUsers(userId)
|
||||
socketclients.UpdateUserSessionsForUser(userId, sessionId)
|
||||
|
||||
logger.AddSystemLog(structs.LogMessage{
|
||||
Id: 0,
|
||||
Type: utils.LogTypeInfo,
|
||||
Messages: []structs.LogData{
|
||||
{Type: "userId", Value: user.Id}}})
|
||||
|
||||
logger.AddGroupTasksLog(structs.LogMessage{
|
||||
Id: 0,
|
||||
Type: utils.LogTypeInfo,
|
||||
Messages: []structs.LogData{
|
||||
{Type: "userId", Value: user.Id}}})
|
||||
|
||||
case data := <-broadcast:
|
||||
var receivedMessage structs.ReceivedMessage
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
[
|
||||
{
|
||||
"id": 0,
|
||||
"languages": [
|
||||
{
|
||||
"lang": "en",
|
||||
"message": "%userId% has logged in"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
Loading…
Reference in New Issue