mirror of
https://github.com/ordinary-dev/phoenix
synced 2024-09-20 03:40:29 +05:00
Format code with go fmt
This commit is contained in:
parent
16cd7aa635
commit
c92fa6e9e0
|
@ -11,16 +11,16 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Admin struct {
|
type Admin struct {
|
||||||
ID uint64 `gorm:"primaryKey"`
|
ID uint64 `gorm:"primaryKey"`
|
||||||
Username string `gorm:"unique;notNull"`
|
Username string `gorm:"unique;notNull"`
|
||||||
Bcrypt string `gorm:"notNull"`
|
Bcrypt string `gorm:"notNull"`
|
||||||
AccessTokens []AccessToken
|
AccessTokens []AccessToken
|
||||||
}
|
}
|
||||||
|
|
||||||
type AccessToken struct {
|
type AccessToken struct {
|
||||||
ID uint64 `gorm:"primaryKey"`
|
ID uint64 `gorm:"primaryKey"`
|
||||||
Value string `gorm:"notNull"`
|
Value string `gorm:"notNull"`
|
||||||
AdminID uint64 `gorm:"notNull"`
|
AdminID uint64 `gorm:"notNull"`
|
||||||
ValidUntil time.Time `gorm:"NotNull"`
|
ValidUntil time.Time `gorm:"NotNull"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,32 +1,32 @@
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Group struct {
|
type Group struct {
|
||||||
ID uint64 `gorm:"primaryKey"`
|
ID uint64 `gorm:"primaryKey"`
|
||||||
Name string `gorm:"unique,notNull"`
|
Name string `gorm:"unique,notNull"`
|
||||||
Links []Link
|
Links []Link
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetGroups(db *gorm.DB) ([]Group, error) {
|
func GetGroups(db *gorm.DB) ([]Group, error) {
|
||||||
var groups []Group
|
var groups []Group
|
||||||
result := db.Model(&Group{}).Preload("Links").Find(&groups)
|
result := db.Model(&Group{}).Preload("Links").Find(&groups)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
return nil, result.Error
|
return nil, result.Error
|
||||||
}
|
}
|
||||||
return groups, nil
|
return groups, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateGroup(db *gorm.DB, groupName string) (Group, error) {
|
func CreateGroup(db *gorm.DB, groupName string) (Group, error) {
|
||||||
group := Group{
|
group := Group{
|
||||||
Name: groupName,
|
Name: groupName,
|
||||||
}
|
}
|
||||||
result := db.Create(&group)
|
result := db.Create(&group)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
return Group{}, result.Error
|
return Group{}, result.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
return group, nil
|
return group, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,48 +1,48 @@
|
||||||
package backend
|
package backend
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Link struct {
|
type Link struct {
|
||||||
ID uint64 `gorm:"primaryKey"`
|
ID uint64 `gorm:"primaryKey"`
|
||||||
Name string `gorm:"notNull"`
|
Name string `gorm:"notNull"`
|
||||||
Href string `gorm:"notNull"`
|
Href string `gorm:"notNull"`
|
||||||
GroupID uint64 `gorm:"notNull"`
|
GroupID uint64 `gorm:"notNull"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateLink(db *gorm.DB, linkName string, href string, groupID uint64) (Link, error) {
|
func CreateLink(db *gorm.DB, linkName string, href string, groupID uint64) (Link, error) {
|
||||||
link := Link{
|
link := Link{
|
||||||
Name: linkName,
|
Name: linkName,
|
||||||
Href: href,
|
Href: href,
|
||||||
GroupID: groupID,
|
GroupID: groupID,
|
||||||
}
|
}
|
||||||
result := db.Create(&link)
|
result := db.Create(&link)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
return Link{}, result.Error
|
return Link{}, result.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
return link, nil
|
return link, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func UpdateLink(db *gorm.DB, id uint64, linkName string, href string) (Link, error) {
|
func UpdateLink(db *gorm.DB, id uint64, linkName string, href string) (Link, error) {
|
||||||
var link Link
|
var link Link
|
||||||
db.First(&link, id)
|
db.First(&link, id)
|
||||||
|
|
||||||
link.Name = linkName
|
link.Name = linkName
|
||||||
link.Href = href
|
link.Href = href
|
||||||
result := db.Save(&link)
|
result := db.Save(&link)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
return Link{}, result.Error
|
return Link{}, result.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
return link, nil
|
return link, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeleteLink(db *gorm.DB, id uint64) error {
|
func DeleteLink(db *gorm.DB, id uint64) error {
|
||||||
result := db.Delete(&Link{}, id)
|
result := db.Delete(&Link{}, id)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
return result.Error
|
return result.Error
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
172
main.go
172
main.go
|
@ -1,13 +1,13 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/ordinary-dev/phoenix/backend"
|
"github.com/ordinary-dev/phoenix/backend"
|
||||||
"github.com/ordinary-dev/phoenix/views"
|
"github.com/ordinary-dev/phoenix/views"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -20,173 +20,173 @@ func main() {
|
||||||
r.LoadHTMLGlob("templates/*")
|
r.LoadHTMLGlob("templates/*")
|
||||||
r.Static("/assets", "./assets")
|
r.Static("/assets", "./assets")
|
||||||
|
|
||||||
// Main page
|
// Main page
|
||||||
r.GET("/", func(c *gin.Context) {
|
r.GET("/", func(c *gin.Context) {
|
||||||
views.RequireAuth(c, db)
|
views.RequireAuth(c, db)
|
||||||
groups, err := backend.GetGroups(db)
|
groups, err := backend.GetGroups(db)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.HTML(http.StatusOK, "index.html.tmpl", gin.H{
|
c.HTML(http.StatusOK, "index.html.tmpl", gin.H{
|
||||||
"groups": groups,
|
"groups": groups,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
r.GET("/settings", func(c *gin.Context) {
|
r.GET("/settings", func(c *gin.Context) {
|
||||||
views.RequireAuth(c, db)
|
views.RequireAuth(c, db)
|
||||||
groups, err := backend.GetGroups(db)
|
groups, err := backend.GetGroups(db)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
c.HTML(http.StatusOK, "settings.html.tmpl", gin.H{
|
c.HTML(http.StatusOK, "settings.html.tmpl", gin.H{
|
||||||
"groups": groups,
|
"groups": groups,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// Create new user
|
// Create new user
|
||||||
r.POST("/users", func(c *gin.Context) {
|
r.POST("/users", func(c *gin.Context) {
|
||||||
// If at least 1 administator exists, require authorization
|
// If at least 1 administator exists, require authorization
|
||||||
if backend.CountAdmins(db) > 0 {
|
if backend.CountAdmins(db) > 0 {
|
||||||
tokenValue, err := c.Cookie("phoenix-token")
|
tokenValue, err := c.Cookie("phoenix-token")
|
||||||
|
|
||||||
// Anonymous visitor
|
// Anonymous visitor
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err = errors.New("At least 1 user exists, you have to sign in first")
|
err = errors.New("At least 1 user exists, you have to sign in first")
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = backend.ValidateToken(db, tokenValue)
|
err = backend.ValidateToken(db, tokenValue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// User is authorized or no user exists.
|
// User is authorized or no user exists.
|
||||||
// Try to create a user.
|
// Try to create a user.
|
||||||
username := c.PostForm("username")
|
username := c.PostForm("username")
|
||||||
password := c.PostForm("password")
|
password := c.PostForm("password")
|
||||||
admin, err := backend.CreateAdmin(db, username, password)
|
admin, err := backend.CreateAdmin(db, username, password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate access token.
|
// Generate access token.
|
||||||
token, err := backend.CreateAccessToken(db, admin.ID)
|
token, err := backend.CreateAccessToken(db, admin.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
backend.SetTokenCookie(c, token)
|
backend.SetTokenCookie(c, token)
|
||||||
|
|
||||||
// Redirect to homepage.
|
// Redirect to homepage.
|
||||||
c.Redirect(http.StatusFound, "/")
|
c.Redirect(http.StatusFound, "/")
|
||||||
})
|
})
|
||||||
|
|
||||||
// Create new group
|
// Create new group
|
||||||
r.POST("/groups", func(c *gin.Context) {
|
r.POST("/groups", func(c *gin.Context) {
|
||||||
views.RequireAuth(c, db)
|
views.RequireAuth(c, db)
|
||||||
|
|
||||||
groupName := c.PostForm("groupName")
|
groupName := c.PostForm("groupName")
|
||||||
_, err := backend.CreateGroup(db, groupName)
|
_, err := backend.CreateGroup(db, groupName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Redirect to settings.
|
// Redirect to settings.
|
||||||
c.Redirect(http.StatusFound, "/settings")
|
c.Redirect(http.StatusFound, "/settings")
|
||||||
})
|
})
|
||||||
|
|
||||||
// Create new link
|
// Create new link
|
||||||
r.POST("/links", func(c *gin.Context) {
|
r.POST("/links", func(c *gin.Context) {
|
||||||
views.RequireAuth(c, db)
|
views.RequireAuth(c, db)
|
||||||
|
|
||||||
linkName := c.PostForm("linkName")
|
linkName := c.PostForm("linkName")
|
||||||
href := c.PostForm("href")
|
href := c.PostForm("href")
|
||||||
groupID, err := strconv.ParseUint(c.PostForm("groupID"), 10, 32)
|
groupID, err := strconv.ParseUint(c.PostForm("groupID"), 10, 32)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = backend.CreateLink(db, linkName, href, groupID)
|
_, err = backend.CreateLink(db, linkName, href, groupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Redirect to settings.
|
// Redirect to settings.
|
||||||
c.Redirect(http.StatusFound, "/settings")
|
c.Redirect(http.StatusFound, "/settings")
|
||||||
})
|
})
|
||||||
|
|
||||||
// Update link
|
// Update link
|
||||||
r.POST("/links/:id/put", func(c *gin.Context) {
|
r.POST("/links/:id/put", func(c *gin.Context) {
|
||||||
views.RequireAuth(c, db)
|
views.RequireAuth(c, db)
|
||||||
|
|
||||||
id, err := strconv.ParseUint(c.Param("id"), 10, 64)
|
id, err := strconv.ParseUint(c.Param("id"), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
linkName := c.PostForm("linkName")
|
linkName := c.PostForm("linkName")
|
||||||
href := c.PostForm("href")
|
href := c.PostForm("href")
|
||||||
|
|
||||||
_, err = backend.UpdateLink(db, id, linkName, href)
|
_, err = backend.UpdateLink(db, id, linkName, href)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Redirect to settings.
|
// Redirect to settings.
|
||||||
c.Redirect(http.StatusFound, "/settings")
|
c.Redirect(http.StatusFound, "/settings")
|
||||||
})
|
})
|
||||||
|
|
||||||
// Delete link
|
// Delete link
|
||||||
r.POST("/links/:id/delete", func(c *gin.Context) {
|
r.POST("/links/:id/delete", func(c *gin.Context) {
|
||||||
views.RequireAuth(c, db)
|
views.RequireAuth(c, db)
|
||||||
|
|
||||||
id, err := strconv.ParseUint(c.Param("id"), 10, 64)
|
id, err := strconv.ParseUint(c.Param("id"), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = backend.DeleteLink(db, id)
|
err = backend.DeleteLink(db, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Redirect to settings.
|
// Redirect to settings.
|
||||||
c.Redirect(http.StatusFound, "/settings")
|
c.Redirect(http.StatusFound, "/settings")
|
||||||
})
|
})
|
||||||
|
|
||||||
r.POST("/signin", func(c *gin.Context) {
|
r.POST("/signin", func(c *gin.Context) {
|
||||||
// Check credentials.
|
// Check credentials.
|
||||||
username := c.PostForm("username")
|
username := c.PostForm("username")
|
||||||
password := c.PostForm("password")
|
password := c.PostForm("password")
|
||||||
admin, err := backend.AuthorizeAdmin(db, username, password)
|
admin, err := backend.AuthorizeAdmin(db, username, password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate an access token.
|
// Generate an access token.
|
||||||
token, err := backend.CreateAccessToken(db, admin.ID)
|
token, err := backend.CreateAccessToken(db, admin.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
views.ShowError(c, err)
|
views.ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
backend.SetTokenCookie(c, token)
|
backend.SetTokenCookie(c, token)
|
||||||
|
|
||||||
// Redirect to homepage.
|
// Redirect to homepage.
|
||||||
c.Redirect(http.StatusFound, "/")
|
c.Redirect(http.StatusFound, "/")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -41,12 +41,12 @@ func RequireAuth(c *gin.Context, db *gorm.DB) {
|
||||||
// Anonymous visitor
|
// Anonymous visitor
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ShowLoginForm(c)
|
ShowLoginForm(c)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = backend.ValidateToken(db, tokenValue)
|
err = backend.ValidateToken(db, tokenValue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ShowError(c, err)
|
ShowError(c, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue