add logging.
This commit is contained in:
@@ -26,6 +26,7 @@ type Auth struct {
|
||||
users repositories.UserRepository
|
||||
session repositories.SessionRepository
|
||||
projects repositories.ProjectRepository
|
||||
issues repositories.IssueRepository
|
||||
}
|
||||
|
||||
func (auth *Auth) Login(ctx context.Context, username, password string) (*models.User, error) {
|
||||
@@ -225,3 +226,92 @@ func (auth *Auth) EditUser(ctx context.Context, username string, setName *string
|
||||
|
||||
return user, nil
|
||||
}
|
||||
|
||||
func (auth *Auth) FilterLogList(ctx context.Context, logs *[]*models.Log) {
|
||||
user := auth.UserFromContext(ctx)
|
||||
if user == nil {
|
||||
panic("Auth.FilterLogList called without user")
|
||||
}
|
||||
|
||||
auth.FilterLog(ctx, *logs...)
|
||||
deleteList := make([]int, 0, len(*logs)/2)
|
||||
for i, log := range *logs {
|
||||
if log.Empty() && log.UserID != user.ID {
|
||||
deleteList = append(deleteList, i-len(deleteList))
|
||||
}
|
||||
}
|
||||
|
||||
list := *logs
|
||||
for _, index := range deleteList {
|
||||
list = append(list[:index], list[index+1:]...)
|
||||
}
|
||||
*logs = list
|
||||
}
|
||||
|
||||
func (auth *Auth) FilterLog(ctx context.Context, logs ...*models.Log) {
|
||||
userID := ""
|
||||
if user := auth.UserFromContext(ctx); user != nil {
|
||||
userID = user.ID
|
||||
}
|
||||
|
||||
accessMap := make(map[string]bool)
|
||||
deleteList := make([]int, 0, 16)
|
||||
for _, log := range logs {
|
||||
if userID == log.UserID {
|
||||
continue
|
||||
}
|
||||
|
||||
deleteList = deleteList[:0]
|
||||
for i, item := range log.Items {
|
||||
if access, ok := accessMap[item.IssueID]; ok && access {
|
||||
continue
|
||||
} else if ok && !access {
|
||||
deleteList = append(deleteList, i-len(deleteList))
|
||||
continue
|
||||
}
|
||||
|
||||
issue, err := auth.issues.Find(ctx, item.IssueID)
|
||||
if err != nil {
|
||||
deleteList = append(deleteList, i-len(deleteList))
|
||||
accessMap[item.IssueID] = true
|
||||
continue
|
||||
}
|
||||
|
||||
_, err = auth.IssuePermission(ctx, *issue)
|
||||
if err != nil {
|
||||
deleteList = append(deleteList, i-len(deleteList))
|
||||
}
|
||||
|
||||
accessMap[issue.ID] = err != nil
|
||||
}
|
||||
for _, index := range deleteList {
|
||||
log.Items = append(log.Items[:index], log.Items[index+1:]...)
|
||||
}
|
||||
deleteList = deleteList[:0]
|
||||
for i, task := range log.Tasks {
|
||||
if access, ok := accessMap[task.IssueID]; ok && access {
|
||||
continue
|
||||
} else if ok && !access {
|
||||
deleteList = append(deleteList, i-len(deleteList))
|
||||
continue
|
||||
}
|
||||
|
||||
issue, err := auth.issues.Find(ctx, task.IssueID)
|
||||
if err != nil {
|
||||
deleteList = append(deleteList, i-len(deleteList))
|
||||
accessMap[task.IssueID] = true
|
||||
continue
|
||||
}
|
||||
|
||||
_, err = auth.IssuePermission(ctx, *issue)
|
||||
if err != nil {
|
||||
deleteList = append(deleteList, i-len(deleteList))
|
||||
}
|
||||
|
||||
accessMap[issue.ID] = err != nil
|
||||
}
|
||||
for _, index := range deleteList {
|
||||
log.Tasks = append(log.Tasks[:index], log.Tasks[index+1:]...)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user