package db import "log" func CreateUser(name string, passhash string, email string, displayName string) error { user := User{ Name: name, PassHash: passhash, Email: email, DisplayName: displayName, } result := conn.Create(&user) if result.Error != nil { log.Printf("Could not add user %s: %v", name, result.Error) return result.Error } else { log.Printf("Created User %s", name) return nil } } func AddUserToGroup(username string, groupname string) error { user, err := GetUserByName(username) if err != nil { return err } group, err := GetGroupByName(groupname) if err != nil { return err } result := conn.Where("name = ?", groupname).First(&user) if result.Error != nil { log.Printf("Could find user %s: %v", username, result.Error) return result.Error } err = conn.Model(&user).Association("Groups").Append(&group) if err != nil { log.Printf("Could add user %s to group %s: %v", username, groupname, result.Error) return result.Error } else { log.Printf("Added user %s to Group %s", username, groupname) return nil } } func DeleteUserFromGroup(username string, groupname string) error { user, err := GetUserByName(username) if err != nil { return err } group, err := GetGroupByName(groupname) if err != nil { return err } result := conn.Where("name = ?", groupname).First(&user) if result.Error != nil { log.Printf("Could find user %s: %v", username, result.Error) return result.Error } err = conn.Model(&user).Association("Groups").Delete(&group) if err != nil { log.Printf("Could delete user %s from group %s: %v", username, groupname, result.Error) return result.Error } else { log.Printf("Deleted user %s from group %s", username, groupname) return nil } } func GetUserByName(name string) (User, error) { var user User user.Name = name result := conn.Where("name = ?", name).First(&user) if result.Error != nil { log.Printf("Could find user %s: %v", name, result.Error) return user, result.Error } else { log.Printf("retrieved user %s", name) return user, nil } } func GetUserByID(id int) (User, error) { var group User result := conn.Where("id = ?", id).First(&group) if result.Error != nil { log.Printf("Could find group %d: %v", id, result.Error) return group, result.Error } else { log.Printf("retrieved group %d", id) return group, nil } } func GetAllUsers() ([]User, error) { var user []User result := conn.Find(&user) if result.Error != nil { log.Printf("Could find roles: %v", result.Error) return user, result.Error } else { return user, nil } } func SetUserName(user User, name string) error { user.Name = name result := conn.Save(&user) if result.Error != nil { log.Printf("Could find user %s: %v", name, result.Error) return result.Error } else { log.Printf("retrieved user %s", name) return nil } } func SetUserDisplayName(user User, name string) error { user.DisplayName = name result := conn.Save(&user) if result.Error != nil { log.Printf("Could find user %s: %v", name, result.Error) return result.Error } else { log.Printf("retrieved user %s", name) return nil } } func SetUserPassHash(user User, hash string) error { user.PassHash = hash result := conn.Save(&user) if result.Error != nil { log.Printf("Could find user %s: %v", hash, result.Error) return result.Error } else { log.Printf("retrieved user %s", hash) return nil } } func SetUserEmail(user User, email string) error { user.Email = email result := conn.Save(&user) if result.Error != nil { log.Printf("Could find user %s: %v", email, result.Error) return result.Error } else { log.Printf("retrieved user %s", email) return nil } } func DeleteUser(user User) error { result := conn.First(&user).Delete(&user) if result.Error != nil { log.Printf("Could find user %d: %v", user.ID, result.Error) return result.Error } else { log.Printf("deleted user %d", user.ID) return nil } }