mirror of https://github.com/gophish/gophish
88 lines
2.1 KiB
Go
88 lines
2.1 KiB
Go
|
package models
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
// Page contains the fields used for a Page model
|
||
|
type Page struct {
|
||
|
Id int64 `json:"id"`
|
||
|
UserId int64 `json:"-"`
|
||
|
Name string `json:"name"`
|
||
|
HTML string `json:"html"`
|
||
|
ModifiedDate time.Time `json:"modified_date"`
|
||
|
}
|
||
|
|
||
|
// ErrPageNameNotSpecified is thrown if the name of the landing page is blank.
|
||
|
var ErrPageNameNotSpecified = errors.New("Template Name not specified")
|
||
|
|
||
|
// Validate ensures that a page contains the appropriate details
|
||
|
func (p *Page) Validate() error {
|
||
|
if p.Name == "" {
|
||
|
return ErrPageNameNotSpecified
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// GetPages returns the pages owned by the given user.
|
||
|
func GetPages(uid int64) ([]Page, error) {
|
||
|
ps := []Page{}
|
||
|
err := db.Where("user_id=?", uid).Find(&ps).Error
|
||
|
if err != nil {
|
||
|
Logger.Println(err)
|
||
|
return ps, err
|
||
|
}
|
||
|
return ps, err
|
||
|
}
|
||
|
|
||
|
// GetPage returns the page, if it exists, specified by the given id and user_id.
|
||
|
func GetPage(id int64, uid int64) (Page, error) {
|
||
|
p := Page{}
|
||
|
err := db.Where("user_id=? and id=?", uid, id).Find(&p).Error
|
||
|
if err != nil {
|
||
|
Logger.Println(err)
|
||
|
}
|
||
|
return p, err
|
||
|
}
|
||
|
|
||
|
// GetPageByName returns the page, if it exists, specified by the given name and user_id.
|
||
|
func GetPageByName(n string, uid int64) (Page, error) {
|
||
|
p := Page{}
|
||
|
err := db.Where("user_id=? and name=?", uid, n).Find(&p).Error
|
||
|
if err != nil {
|
||
|
Logger.Println(err)
|
||
|
}
|
||
|
return p, nil
|
||
|
}
|
||
|
|
||
|
// PostPage creates a new page in the database.
|
||
|
func PostPage(p *Page) error {
|
||
|
// Insert into the DB
|
||
|
err := db.Save(p).Error
|
||
|
if err != nil {
|
||
|
Logger.Println(err)
|
||
|
}
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
// PutPage edits an existing Page in the database.
|
||
|
// Per the PUT Method RFC, it presumes all data for a page is provided.
|
||
|
func PutPage(p *Page) error {
|
||
|
err := db.Debug().Where("id=?", p.Id).Save(p).Error
|
||
|
if err != nil {
|
||
|
Logger.Println(err)
|
||
|
}
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
// DeletePage deletes an existing page in the database.
|
||
|
// An error is returned if a page with the given user id and page id is not found.
|
||
|
func DeletePage(id int64, uid int64) error {
|
||
|
err = db.Where("user_id=?", uid).Delete(Page{Id: id}).Error
|
||
|
if err != nil {
|
||
|
Logger.Println(err)
|
||
|
}
|
||
|
return err
|
||
|
}
|