本文整理汇总了Golang中github.com/gin-gonic/contrib/sessions.Default函数的典型用法代码示例。如果您正苦于以下问题:Golang Default函数的具体用法?Golang Default怎么用?Golang Default使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Default函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: ReviewUpdatePost
func ReviewUpdatePost(c *gin.Context) {
session := sessions.Default(c)
db := models.GetDB()
c.Request.ParseMultipartForm(32 << 20)
review := &models.Review{}
if err := c.Bind(review); err == nil {
if mpartFile, mpartHeader, err := c.Request.FormFile("image"); err == nil {
defer mpartFile.Close()
review.Image, err = saveFile(mpartHeader, mpartFile)
if err != nil {
c.HTML(500, "errors/500", helpers.ErrorData(err))
return
}
}
if err := db.Model(&models.Review{}).Updates(review).Error; err != nil {
session.AddFlash(err.Error())
session.Save()
c.Redirect(303, c.Request.RequestURI)
return
}
session.AddFlash("Отзыв был успешно сохранен")
} else {
log.Println(err)
session.AddFlash("Ошибка! Внимательно проверьте заполнение всех полей")
}
session.Save()
c.Redirect(303, "/reviews")
}
示例2: ReviewUpdateGet
//ReviewUpdate handles /edit_review?token=:secure_token route
func ReviewUpdateGet(c *gin.Context) {
session := sessions.Default(c)
flashes := session.Flashes()
session.Save()
db := models.GetDB()
id := getIDFromToken(c.Request.FormValue("token"))
review := &models.Review{}
db.First(review, id)
if review.ID == 0 || review.Published {
err := fmt.Errorf("Отзыв не найден или уже был опубликован и не подлежит редактированию")
c.HTML(404, "errors/404", helpers.ErrorData(err))
return
}
var articles []models.Article
db.Where("published = ?", true).Find(&articles)
review.Published = true //set default to true
c.HTML(200, "reviews/form", gin.H{
"Title": "Редактировать отзыв",
"Articles": articles,
"Active": "reviews",
"Review": review,
"SecureEdit": true,
"Flash": flashes,
})
}
示例3: CurrentUserUuid
func CurrentUserUuid(c *gin.Context) string {
sess := sessions.Default(c)
if sess.Get("uuid") == nil {
return ""
}
return sess.Get("uuid").(string)
}
示例4: ReviewAdminUpdatePost
func ReviewAdminUpdatePost(c *gin.Context) {
session := sessions.Default(c)
db := models.GetDB()
c.Request.ParseMultipartForm(32 << 20)
review := &models.Review{}
if c.Bind(review) == nil {
review.ArticleID = helpers.Atouintr(c.Request.FormValue("article_id"))
if mpartFile, mpartHeader, err := c.Request.FormFile("image"); err == nil {
defer mpartFile.Close()
review.Image, err = saveFile(mpartHeader, mpartFile)
if err != nil {
c.HTML(500, "errors/500", helpers.ErrorData(err))
return
}
}
if err := db.Model(&models.Review{}).Updates(review).Error; err != nil {
session.AddFlash(err.Error())
session.Save()
c.Redirect(303, c.Request.RequestURI)
return
}
c.Redirect(303, "/admin/reviews")
} else {
session.AddFlash("Ошибка! Проверьте внимательно заполнение всех полей!")
session.Save()
c.Redirect(303, c.Request.RequestURI)
}
}
示例5: SignUpPost
func SignUpPost(c *gin.Context) {
session := sessions.Default(c)
db := models.GetDB()
register := &models.Register{}
if c.Bind(register) == nil {
user := &models.User{}
db.Where("lower(email) = lower(?)", register.Email).First(user)
if user.ID != 0 {
session.AddFlash("Пользователь с таким эл. адресом уже существует")
session.Save()
c.Redirect(303, "/signup")
return
}
//create user
user.Email = register.Email
user.Password = register.Password
if err := db.Create(user).Error; err != nil {
session.AddFlash("Ошибка регистрации пользователя")
session.Save()
log.Printf("ERROR: ошибка регистрации пользователя: %v", err)
c.Redirect(303, "/signup")
return
}
session.Set("user_id", user.ID)
session.Save()
c.Redirect(303, "/")
}
}
示例6: UserMiddleware
// UserMiddleware gets the current user object from the database that
// matches userID from the session, it then sets it on the gin context.
// This allows the user to be used throughout the application without
// needing to query it again each time it is needed.
func UserMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
var userID uint
session := sessions.Default(c)
// grab userID from session
v := session.Get("userID")
if v == nil {
userID = 0
} else {
userID = v.(uint)
}
// a valid userID starts at 1, 0 is an unauthenticated user
if userID > 0 {
var user User
db.DB.Where("id = ?", userID).First(&user)
c.Set("user", &user)
} else {
c.Set("user", nil)
}
c.Next()
}
}
示例7: Login
// Login is a page with a login form and an alternative to the login API,
// this route handles both GET and POST requests.
func Login(c *gin.Context) {
session := sessions.Default(c)
defer session.Save()
// returnURL can come from GET or POST or use default.
returnURL := c.DefaultQuery("return_url", c.DefaultPostForm("return_url", "/"))
if c.Request.Method == "POST" {
var schema LoginSchema
if c.Bind(&schema) == nil {
// Fetch the user matching this username.
user := GetUserByUsername(schema.Username)
// If the user exists, the ID is > 0, check the password.
if user.ID > 0 && user.CheckPassword(schema.Password) {
session.Set("userID", user.ID)
c.Redirect(http.StatusFound, returnURL)
return
}
session.AddFlash("Invalid username or password")
}
}
c.HTML(200, "login.html", pongo2.Context{
"title": "Login",
"messages": session.Flashes(),
"csrf_token": nosurf.Token(c.Request),
"return_url": returnURL,
})
}
示例8: LoginPostHandler
func LoginPostHandler(c *gin.Context) {
redirect := c.DefaultQuery(auth.RedirectParam, "/")
a := auth.Default(c)
if a.User.IsAuthenticated() {
c.Redirect(http.StatusMovedPermanently, redirect)
return
}
loginURL := fmt.Sprintf("/login?%s=%s", auth.RedirectParam, redirect)
var form LoginForm
if c.Bind(&form) == nil {
model := models.Default(c)
u := model.GetUserByNicknamePwd(form.Nickname, form.Password)
if u != nil {
session := sessions.Default(c)
err := auth.AuthenticateSession(session, u)
if err != nil {
c.JSON(http.StatusBadRequest, err)
}
c.Redirect(http.StatusMovedPermanently, redirect)
return
} else {
c.Redirect(http.StatusMovedPermanently, loginURL)
return
}
} else {
c.Redirect(http.StatusMovedPermanently, loginURL)
return
}
}
示例9: PostLogin
func (h *FrontendHandlers) PostLogin(c *gin.Context) {
data := &LoginData{
Username: c.PostForm("username"),
Password: c.PostForm("password"),
}
if v := validateLogin(data); v.HasError() {
data.Validate = v.Messages()
h.render.HTML(c.Writer, 200, "login", data)
return
}
info, err := h.loginService.Login(data.Username, data.Password)
if err != nil {
data.Error = err.Error()
h.render.HTML(c.Writer, 200, "login", data)
return
}
session := sessions.Default(c)
session.Set("user_id", info.Id)
session.Save()
c.Redirect(302, "/")
}
示例10: CommentCreatePost
//CommentCreatePost handles /new_comment route
func CommentCreatePost(c *gin.Context) {
session := sessions.Default(c)
db := models.GetDB()
comment := &models.Comment{}
if c.Bind(comment) == nil {
//simple captcha check
captcha, err := base64.StdEncoding.DecodeString(comment.Captcha)
if err != nil {
c.HTML(500, "errors/500", helpers.ErrorData(err))
return
}
if string(captcha) != "100.00" {
c.HTML(400, "errors/400", nil)
return
}
comment.Published = false //leave unpublished
if err := db.Create(comment).Error; err != nil {
c.HTML(400, "errors/400", helpers.ErrorData(err))
return
}
notifyAdminOfComment(comment)
session.AddFlash("Спасибо! Ваш вопрос будет опубликован после проверки.")
session.Save()
c.Redirect(303, fmt.Sprintf("/articles/%d#comments", comment.ArticleID))
} else {
session.AddFlash("Ошибка! Внимательно проверьте заполнение всех полей!")
session.Save()
c.Redirect(303, "/")
}
}
示例11: SignOut
func (self *SessionController) SignOut(c *gin.Context) {
session := sessions.Default(c)
session.Delete("token")
session.Save()
c.Redirect(http.StatusSeeOther, "/")
}
示例12: Logout
func (h *FrontendHandlers) Logout(c *gin.Context) {
session := sessions.Default(c)
session.Clear()
session.Save()
c.Redirect(302, "/login")
}
示例13: saveRememberMe
func saveRememberMe(c *gin.Context) error {
session := sessions.Default(c)
loginUser := session.Get(authConf.Session.SessionKey)
RMSession := setRMSessionValue(c, authConf.Session.SessionKey, loginUser)
return saveRMSession(c, RMSession)
}
示例14: SignInPost
//SignInPost handles POST /signin route, authenticates user
func SignInPost(c *gin.Context) {
session := sessions.Default(c)
user := &models.User{}
if err := c.Bind(user); err != nil {
session.AddFlash("Please, fill out form correctly.")
session.Save()
c.Redirect(http.StatusFound, "/signin")
return
}
userDB, _ := models.GetUserByEmail(user.Email)
if userDB.ID == 0 {
logrus.Errorf("Login error, IP: %s, Email: %s", c.ClientIP(), user.Email)
session.AddFlash("Email or password incorrect")
session.Save()
c.Redirect(http.StatusFound, "/signin")
return
}
if err := bcrypt.CompareHashAndPassword([]byte(userDB.Password), []byte(user.Password)); err != nil {
logrus.Errorf("Login error, IP: %s, Email: %s", c.ClientIP(), user.Email)
session.AddFlash("Email or password incorrect")
session.Save()
c.Redirect(http.StatusFound, "/signin")
return
}
session.Set("UserID", userDB.ID)
session.Save()
c.Redirect(http.StatusFound, "/")
}
示例15: RegisterPostHandler
func RegisterPostHandler(c *gin.Context) {
redirect := c.DefaultQuery(auth.RedirectParam, "/")
a := auth.Default(c)
if a.User.IsAuthenticated() {
c.Redirect(http.StatusMovedPermanently, redirect)
return
}
registerURL := fmt.Sprintf("/register?%s=%s", auth.RedirectParam, redirect)
var form LoginForm
if c.Bind(&form) == nil {
model := models.Default(c)
u := model.AddUserWithNicknamePwd(form.Nickname, form.Password)
if u != nil {
session := sessions.Default(c)
err := auth.AuthenticateSession(session, u)
if err != nil {
c.JSON(http.StatusBadRequest, err)
}
c.Redirect(http.StatusMovedPermanently, redirect)
return
} else {
log.Print("Register user add error")
c.Redirect(http.StatusMovedPermanently, registerURL)
return
}
} else {
log.Print("Register form bind error")
c.Redirect(http.StatusMovedPermanently, registerURL)
return
}
}