2014-03-08 01:05:18 +04:00
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package auth
import (
2014-03-13 11:39:18 +04:00
"net/http"
"reflect"
2014-03-30 20:11:28 +04:00
"github.com/go-martini/martini"
2014-03-08 01:05:18 +04:00
2014-03-13 11:39:18 +04:00
"github.com/gogits/binding"
2014-03-30 20:11:28 +04:00
"github.com/gogits/session"
2014-03-13 11:39:18 +04:00
2014-03-08 01:05:18 +04:00
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/base"
2014-03-08 02:22:15 +04:00
"github.com/gogits/gogs/modules/log"
2014-03-08 01:05:18 +04:00
)
2014-03-17 22:03:58 +04:00
// SignedInId returns the id of signed in user.
2014-03-22 16:49:53 +04:00
func SignedInId ( session session . SessionStore ) int64 {
2014-03-30 18:47:08 +04:00
if ! models . HasEngine {
return 0
}
2014-03-08 01:05:18 +04:00
userId := session . Get ( "userId" )
if userId == nil {
return 0
}
if s , ok := userId . ( int64 ) ; ok {
2014-03-11 19:54:43 +04:00
if _ , err := models . GetUserById ( s ) ; err != nil {
return 0
}
2014-03-08 01:05:18 +04:00
return s
}
return 0
}
2014-03-17 22:03:58 +04:00
// SignedInName returns the name of signed in user.
2014-03-22 16:49:53 +04:00
func SignedInName ( session session . SessionStore ) string {
2014-03-08 01:05:18 +04:00
userName := session . Get ( "userName" )
if userName == nil {
return ""
}
if s , ok := userName . ( string ) ; ok {
return s
}
return ""
}
2014-03-17 22:03:58 +04:00
// SignedInUser returns the user object of signed user.
2014-03-22 16:49:53 +04:00
func SignedInUser ( session session . SessionStore ) * models . User {
2014-03-08 01:05:18 +04:00
id := SignedInId ( session )
if id <= 0 {
return nil
}
user , err := models . GetUserById ( id )
if err != nil {
log . Error ( "user.SignedInUser: %v" , err )
return nil
}
return user
}
2014-03-17 22:03:58 +04:00
// IsSignedIn check if any user has signed in.
2014-03-22 16:49:53 +04:00
func IsSignedIn ( session session . SessionStore ) bool {
2014-03-08 01:05:18 +04:00
return SignedInId ( session ) > 0
}
2014-03-13 11:39:18 +04:00
type FeedsForm struct {
UserId int64 ` form:"userid" binding:"Required" `
2014-03-15 13:30:59 +04:00
Page int64 ` form:"p" `
2014-03-13 11:39:18 +04:00
}
type UpdateProfileForm struct {
2014-04-04 00:33:27 +04:00
UserName string ` form:"username" binding:"Required;AlphaDash;MaxSize(30)" `
2014-03-13 11:39:18 +04:00
Email string ` form:"email" binding:"Required;Email;MaxSize(50)" `
2014-03-14 09:12:07 +04:00
Website string ` form:"website" binding:"MaxSize(50)" `
2014-03-13 11:39:18 +04:00
Location string ` form:"location" binding:"MaxSize(50)" `
Avatar string ` form:"avatar" binding:"Required;Email;MaxSize(50)" `
}
func ( f * UpdateProfileForm ) Name ( field string ) string {
names := map [ string ] string {
2014-04-04 00:33:27 +04:00
"UserName" : "Username" ,
2014-03-21 14:15:58 +04:00
"Email" : "E-mail address" ,
2014-03-13 11:39:18 +04:00
"Website" : "Website" ,
"Location" : "Location" ,
"Avatar" : "Gravatar Email" ,
}
return names [ field ]
}
func ( f * UpdateProfileForm ) Validate ( errors * binding . Errors , req * http . Request , context martini . Context ) {
if req . Method == "GET" || errors . Count ( ) == 0 {
return
}
data := context . Get ( reflect . TypeOf ( base . TmplData { } ) ) . Interface ( ) . ( base . TmplData )
data [ "HasError" ] = true
if len ( errors . Overall ) > 0 {
for _ , err := range errors . Overall {
log . Error ( "UpdateProfileForm.Validate: %v" , err )
}
return
}
validate ( errors , data , f )
}
2014-03-13 12:06:35 +04:00
type UpdatePasswdForm struct {
OldPasswd string ` form:"oldpasswd" binding:"Required;MinSize(6);MaxSize(30)" `
NewPasswd string ` form:"newpasswd" binding:"Required;MinSize(6);MaxSize(30)" `
RetypePasswd string ` form:"retypepasswd" `
}
func ( f * UpdatePasswdForm ) Name ( field string ) string {
names := map [ string ] string {
"OldPasswd" : "Old password" ,
"NewPasswd" : "New password" ,
"RetypePasswd" : "Re-type password" ,
}
return names [ field ]
}
func ( f * UpdatePasswdForm ) Validate ( errors * binding . Errors , req * http . Request , context martini . Context ) {
if req . Method == "GET" || errors . Count ( ) == 0 {
return
}
data := context . Get ( reflect . TypeOf ( base . TmplData { } ) ) . Interface ( ) . ( base . TmplData )
data [ "HasError" ] = true
if len ( errors . Overall ) > 0 {
for _ , err := range errors . Overall {
log . Error ( "UpdatePasswdForm.Validate: %v" , err )
}
return
}
validate ( errors , data , f )
}