// Copyright 2023 wanderer // SPDX-License-Identifier: AGPL-3.0-only package handlers type userSignin struct { Username string `form:"username" json:"username" validate:"required,username,gte=2"` Password string `form:"password" json:"password" validate:"required,password,gte=12"` } type userSignup struct { Username string `form:"username" json:"username" validate:"required,username,gte=2"` Email string `form:"email" json:"email" validate:"required,email"` Password string `form:"password" json:"password" validate:"required,password,gte=20"` } // this struct is also used on update by admins, which is why the password fields are omitempty. // when users finish setting up, admins can no longer change their passwords. type userCreate struct { Username string `form:"username" json:"username" validate:"required,username,gte=2"` Email string `form:"email" json:"email" validate:"required,email"` Password string `form:"password" json:"password" validate:"omitempty,password,gte=20"` RepeatPassword string `form:"repeatPassword" json:"repeatPassword" validate:"omitempty,repeatPassword,gte=20"` IsAdmin bool `form:"isAdmin" json:"isAdmin" validate:"required,isAdmin"` IsActive *bool `form:"isActive" json:"isActive" validate:"omitempty,isActive"` } type userID struct { ID string `param:"id" validate:"required,id"` } type initPasswordChange struct { NewPassword string `form:"new-password" validate:"required,new-password,gte=20"` } type hibpSearch struct { Account string `form:"search" validate:"required,search,gt=2"` } type hibpBreachDetail struct { BreachName string `param:"name" validate:"required,name,gt=0"` }