wiiiip
Cette révision appartient à :
Parent
5639033370
révision
a4c23dda1f
8 fichiers modifiés avec 27 ajouts et 25 suppressions
|
@ -1,6 +1,7 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/NyaaPantsu/nyaa/config"
|
"github.com/NyaaPantsu/nyaa/config"
|
||||||
|
@ -102,7 +103,7 @@ type UserUploadsOld struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserSettings struct {
|
type UserSettings struct {
|
||||||
settings map[string]interface{} `json:"settings"`
|
settings map[string]bool`json:"settings"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c UserUploadsOld) TableName() string {
|
func (c UserUploadsOld) TableName() string {
|
||||||
|
@ -124,19 +125,19 @@ func (u *User) ToJSON() UserJSON {
|
||||||
|
|
||||||
/* User Settings */
|
/* User Settings */
|
||||||
|
|
||||||
func(s UserSettings) Get(key string) interface{} {
|
func(s UserSettings) Get(key string) bool {
|
||||||
if (s.settings[key] != nil) {
|
if val, ok:= s.settings[key]; ok {
|
||||||
return s.settings[key]
|
return val
|
||||||
} else {
|
} else {
|
||||||
return config.DefaultUserSettings[key]
|
return config.DefaultUserSettings[key]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s UserSettings) GetSettings() {
|
func (s UserSettings) GetSettings() map[string]bool {
|
||||||
return s.settings
|
return s.settings
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s UserSettings) Set(key string, val interface{}) {
|
func (s UserSettings) Set(key string, val bool) {
|
||||||
s.settings[key] = val
|
s.settings[key] = val
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,7 +146,8 @@ func (s UserSettings) ToDefault() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u User) SaveSettings() {
|
func (u User) SaveSettings() {
|
||||||
u.UserSettings , _ = json.Marshal(u.Settings.GetSettings())
|
byteArray, _ := json.Marshal(u.Settings.GetSettings())
|
||||||
|
u.UserSettings = string(byteArray[:])
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u User) ParseSettings() {
|
func (u User) ParseSettings() {
|
||||||
|
|
|
@ -16,7 +16,6 @@ import (
|
||||||
"github.com/NyaaPantsu/nyaa/service/torrent"
|
"github.com/NyaaPantsu/nyaa/service/torrent"
|
||||||
"github.com/NyaaPantsu/nyaa/service/user"
|
"github.com/NyaaPantsu/nyaa/service/user"
|
||||||
"github.com/NyaaPantsu/nyaa/service/user/permission"
|
"github.com/NyaaPantsu/nyaa/service/user/permission"
|
||||||
form "github.com/NyaaPantsu/nyaa/service/user/form"
|
|
||||||
"github.com/NyaaPantsu/nyaa/util/log"
|
"github.com/NyaaPantsu/nyaa/util/log"
|
||||||
msg "github.com/NyaaPantsu/nyaa/util/messages"
|
msg "github.com/NyaaPantsu/nyaa/util/messages"
|
||||||
"github.com/NyaaPantsu/nyaa/util/search"
|
"github.com/NyaaPantsu/nyaa/util/search"
|
||||||
|
@ -235,6 +234,7 @@ func CommentsListPanel(w http.ResponseWriter, r *http.Request) {
|
||||||
func TorrentEditModPanel(w http.ResponseWriter, r *http.Request) {
|
func TorrentEditModPanel(w http.ResponseWriter, r *http.Request) {
|
||||||
id := r.URL.Query().Get("id")
|
id := r.URL.Query().Get("id")
|
||||||
torrent, _ := torrentService.GetTorrentById(id)
|
torrent, _ := torrentService.GetTorrentById(id)
|
||||||
|
messages:= msg.GetMessages(r)
|
||||||
|
|
||||||
torrentJson := torrent.ToJSON()
|
torrentJson := torrent.ToJSON()
|
||||||
uploadForm := NewUploadForm()
|
uploadForm := NewUploadForm()
|
||||||
|
@ -243,7 +243,7 @@ func TorrentEditModPanel(w http.ResponseWriter, r *http.Request) {
|
||||||
uploadForm.Status = torrentJson.Status
|
uploadForm.Status = torrentJson.Status
|
||||||
uploadForm.WebsiteLink = string(torrentJson.WebsiteLink)
|
uploadForm.WebsiteLink = string(torrentJson.WebsiteLink)
|
||||||
uploadForm.Description = string(torrentJson.Description)
|
uploadForm.Description = string(torrentJson.Description)
|
||||||
htv := PanelTorrentEdVbs{NewPanelCommonVariables(r), uploadForm, form.NewErrors(), form.NewInfos()}
|
htv := PanelTorrentEdVbs{NewPanelCommonVariables(r), uploadForm, messages.GetAllErrors(), messages.GetAllInfos()}
|
||||||
err := panelTorrentEd.ExecuteTemplate(w, "admin_index.html", htv)
|
err := panelTorrentEd.ExecuteTemplate(w, "admin_index.html", htv)
|
||||||
log.CheckError(err)
|
log.CheckError(err)
|
||||||
}
|
}
|
||||||
|
@ -252,7 +252,6 @@ func TorrentPostEditModPanel(w http.ResponseWriter, r *http.Request) {
|
||||||
var uploadForm UploadForm
|
var uploadForm UploadForm
|
||||||
id := r.URL.Query().Get("id")
|
id := r.URL.Query().Get("id")
|
||||||
messages := msg.GetMessages(r)
|
messages := msg.GetMessages(r)
|
||||||
infos := form.NewInfos()
|
|
||||||
torrent, _ := torrentService.GetTorrentById(id)
|
torrent, _ := torrentService.GetTorrentById(id)
|
||||||
if torrent.ID > 0 {
|
if torrent.ID > 0 {
|
||||||
errUp := uploadForm.ExtractEditInfo(r)
|
errUp := uploadForm.ExtractEditInfo(r)
|
||||||
|
@ -310,7 +309,8 @@ func TorrentReportDeleteModPanel(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TorrentReassignModPanel(w http.ResponseWriter, r *http.Request) {
|
func TorrentReassignModPanel(w http.ResponseWriter, r *http.Request) {
|
||||||
htv := PanelTorrentReassignVbs{NewPanelCommonVariables(r), ReassignForm{}, form.NewErrors(), form.NewInfos()}
|
messages := msg.GetMessages(r)
|
||||||
|
htv := PanelTorrentReassignVbs{NewPanelCommonVariables(r), ReassignForm{}, messages.GetAllErrors(), messages.GetAllInfos()}
|
||||||
err := panelTorrentReassign.ExecuteTemplate(w, "admin_index.html", htv)
|
err := panelTorrentReassign.ExecuteTemplate(w, "admin_index.html", htv)
|
||||||
log.CheckError(err)
|
log.CheckError(err)
|
||||||
}
|
}
|
||||||
|
@ -318,7 +318,6 @@ func TorrentReassignModPanel(w http.ResponseWriter, r *http.Request) {
|
||||||
func TorrentPostReassignModPanel(w http.ResponseWriter, r *http.Request) {
|
func TorrentPostReassignModPanel(w http.ResponseWriter, r *http.Request) {
|
||||||
var rForm ReassignForm
|
var rForm ReassignForm
|
||||||
messages := msg.GetMessages(r)
|
messages := msg.GetMessages(r)
|
||||||
infos := form.NewInfos()
|
|
||||||
|
|
||||||
err2 := rForm.ExtractInfo(r)
|
err2 := rForm.ExtractInfo(r)
|
||||||
if err2 != nil {
|
if err2 != nil {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/NyaaPantsu/nyaa/config"
|
||||||
"github.com/NyaaPantsu/nyaa/db"
|
"github.com/NyaaPantsu/nyaa/db"
|
||||||
"github.com/NyaaPantsu/nyaa/model"
|
"github.com/NyaaPantsu/nyaa/model"
|
||||||
"github.com/NyaaPantsu/nyaa/service/captcha"
|
"github.com/NyaaPantsu/nyaa/service/captcha"
|
||||||
|
@ -84,7 +85,7 @@ func UploadPostHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
if len(user.Likings) > 0 { // If we are followed by at least someone
|
if len(user.Likings) > 0 { // If we are followed by at least someone
|
||||||
for _, follower := range user.Likings {
|
for _, follower := range user.Likings {
|
||||||
follower.ParseSettings() // We need to call it before checking settings
|
follower.ParseSettings() // We need to call it before checking settings
|
||||||
if follower.Settings.Get("notifications.new_torrent"] {
|
if follower.Settings.Get("notifications.new_torrent") {
|
||||||
T, _, _ := languages.TfuncAndLanguageWithFallback(user.Language, user.Language) // We need to send the notification to every user in their language
|
T, _, _ := languages.TfuncAndLanguageWithFallback(user.Language, user.Language) // We need to send the notification to every user in their language
|
||||||
|
|
||||||
notifierService.NotifyUser(&follower, torrent.Identifier(), fmt.Sprintf(T("new_torrent_uploaded"), torrent.Name, user.Username), url.String())
|
notifierService.NotifyUser(&follower, torrent.Identifier(), fmt.Sprintf(T("new_torrent_uploaded"), torrent.Name, user.Username), url.String())
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package router
|
package router
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
@ -198,7 +197,7 @@ func UserProfileFormHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
// Post Registration controller, we do some check on the form here, the rest on user service
|
// Post Registration controller, we do some check on the form here, the rest on user service
|
||||||
func UserRegisterPostHandler(w http.ResponseWriter, r *http.Request) {
|
func UserRegisterPostHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
b := form.RegistrationForm{}
|
b := form.RegistrationForm{}
|
||||||
messages = msg.GetMessages(r)
|
messages := msg.GetMessages(r)
|
||||||
|
|
||||||
if !captcha.Authenticate(captcha.Extract(r)) {
|
if !captcha.Authenticate(captcha.Extract(r)) {
|
||||||
messages.AddError("errors", "Wrong captcha!")
|
messages.AddError("errors", "Wrong captcha!")
|
||||||
|
@ -255,7 +254,7 @@ func UserVerifyEmailHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
func UserLoginPostHandler(w http.ResponseWriter, r *http.Request) {
|
func UserLoginPostHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
b := form.LoginForm{}
|
b := form.LoginForm{}
|
||||||
modelHelper.BindValueForm(&b, r)
|
modelHelper.BindValueForm(&b, r)
|
||||||
messages := msg.GetAllErrors()
|
messages := msg.GetMessages(r)
|
||||||
|
|
||||||
modelHelper.ValidateForm(&b, &messages)
|
modelHelper.ValidateForm(&b, &messages)
|
||||||
if !messages.HasErrors() {
|
if !messages.HasErrors() {
|
||||||
|
|
|
@ -12,7 +12,6 @@ import (
|
||||||
"github.com/NyaaPantsu/nyaa/service/notifier"
|
"github.com/NyaaPantsu/nyaa/service/notifier"
|
||||||
"github.com/NyaaPantsu/nyaa/service/torrent"
|
"github.com/NyaaPantsu/nyaa/service/torrent"
|
||||||
"github.com/NyaaPantsu/nyaa/service/user/permission"
|
"github.com/NyaaPantsu/nyaa/service/user/permission"
|
||||||
"github.com/NyaaPantsu/nyaa/util"
|
|
||||||
"github.com/NyaaPantsu/nyaa/util/log"
|
"github.com/NyaaPantsu/nyaa/util/log"
|
||||||
msg "github.com/NyaaPantsu/nyaa/util/messages"
|
msg "github.com/NyaaPantsu/nyaa/util/messages"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"github.com/NyaaPantsu/nyaa/db"
|
"github.com/NyaaPantsu/nyaa/db"
|
||||||
"github.com/NyaaPantsu/nyaa/model"
|
"github.com/NyaaPantsu/nyaa/model"
|
||||||
formStruct "github.com/NyaaPantsu/nyaa/service/user/form"
|
formStruct "github.com/NyaaPantsu/nyaa/service/user/form"
|
||||||
|
msg "github.com/NyaaPantsu/nyaa/util/messages"
|
||||||
"github.com/NyaaPantsu/nyaa/util/modelHelper"
|
"github.com/NyaaPantsu/nyaa/util/modelHelper"
|
||||||
"github.com/NyaaPantsu/nyaa/util/timeHelper"
|
"github.com/NyaaPantsu/nyaa/util/timeHelper"
|
||||||
"github.com/gorilla/context"
|
"github.com/gorilla/context"
|
||||||
|
@ -62,14 +63,15 @@ func ClearCookie(w http.ResponseWriter) (int, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetCookieHandler sets the authentication cookie
|
// SetCookieHandler sets the authentication cookie
|
||||||
func SetCookieHandler(w http.ResponseWriter, email string, pass string) (int, error) {
|
func SetCookieHandler(w http.ResponseWriter, r *http.Request, email string, pass string) (int, error) {
|
||||||
if email == "" || pass == "" {
|
if email == "" || pass == "" {
|
||||||
return http.StatusNotFound, errors.New("No username/password entered")
|
return http.StatusNotFound, errors.New("No username/password entered")
|
||||||
}
|
}
|
||||||
|
|
||||||
var user model.User
|
var user model.User
|
||||||
|
messages := msg.GetMessages(r)
|
||||||
// search by email or username
|
// search by email or username
|
||||||
isValidEmail, _ := formStruct.EmailValidation(email, formStruct.NewErrors())
|
isValidEmail := formStruct.EmailValidation(email, &messages)
|
||||||
if isValidEmail {
|
if isValidEmail {
|
||||||
if db.ORM.Where("email = ?", email).First(&user).RecordNotFound() {
|
if db.ORM.Where("email = ?", email).First(&user).RecordNotFound() {
|
||||||
return http.StatusNotFound, errors.New("User not found")
|
return http.StatusNotFound, errors.New("User not found")
|
||||||
|
@ -104,17 +106,17 @@ func SetCookieHandler(w http.ResponseWriter, email string, pass string) (int, er
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterHanderFromForm sets cookie from a RegistrationForm.
|
// RegisterHanderFromForm sets cookie from a RegistrationForm.
|
||||||
func RegisterHanderFromForm(w http.ResponseWriter, registrationForm formStruct.RegistrationForm) (int, error) {
|
func RegisterHanderFromForm(w http.ResponseWriter, r *http.Request, registrationForm formStruct.RegistrationForm) (int, error) {
|
||||||
username := registrationForm.Username // email isn't set at this point
|
username := registrationForm.Username // email isn't set at this point
|
||||||
pass := registrationForm.Password
|
pass := registrationForm.Password
|
||||||
return SetCookieHandler(w, username, pass)
|
return SetCookieHandler(w, r, username, pass)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterHandler sets a cookie when user registered.
|
// RegisterHandler sets a cookie when user registered.
|
||||||
func RegisterHandler(w http.ResponseWriter, r *http.Request) (int, error) {
|
func RegisterHandler(w http.ResponseWriter, r *http.Request) (int, error) {
|
||||||
var registrationForm formStruct.RegistrationForm
|
var registrationForm formStruct.RegistrationForm
|
||||||
modelHelper.BindValueForm(®istrationForm, r)
|
modelHelper.BindValueForm(®istrationForm, r)
|
||||||
return RegisterHanderFromForm(w, registrationForm)
|
return RegisterHanderFromForm(w, r, registrationForm)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CurrentUser determines the current user from the request or context
|
// CurrentUser determines the current user from the request or context
|
||||||
|
|
|
@ -81,7 +81,8 @@ func CreateUserFromForm(registrationForm formStruct.RegistrationForm) (model.Use
|
||||||
user.Email = "" // unset email because it will be verified later
|
user.Email = "" // unset email because it will be verified later
|
||||||
user.CreatedAt = time.Now()
|
user.CreatedAt = time.Now()
|
||||||
// User settings to default
|
// User settings to default
|
||||||
user.ToDefault()
|
user.Settings.ToDefault()
|
||||||
|
user.SaveSettings()
|
||||||
// currently unused but needs to be set:
|
// currently unused but needs to be set:
|
||||||
user.ApiToken = ""
|
user.ApiToken = ""
|
||||||
user.ApiTokenExpiry = time.Unix(0, 0)
|
user.ApiTokenExpiry = time.Unix(0, 0)
|
||||||
|
@ -321,7 +322,7 @@ func CreateUserAuthentication(w http.ResponseWriter, r *http.Request) (int, erro
|
||||||
modelHelper.BindValueForm(&form, r)
|
modelHelper.BindValueForm(&form, r)
|
||||||
username := form.Username
|
username := form.Username
|
||||||
pass := form.Password
|
pass := form.Password
|
||||||
status, err := SetCookieHandler(w, username, pass)
|
status, err := SetCookieHandler(w, r, username, pass)
|
||||||
return status, err
|
return status, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package modelHelper
|
package modelHelper
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"github.com/NyaaPantsu/nyaa/util/log"
|
"github.com/NyaaPantsu/nyaa/util/log"
|
||||||
msg "github.com/NyaaPantsu/nyaa/util/messages"
|
msg "github.com/NyaaPantsu/nyaa/util/messages"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
Référencer dans un nouveau ticket