2014-07-26 08:24:27 +04:00
// Copyright 2014 The Gogs Authors. All rights reserved.
2017-05-29 10:17:15 +03:00
// Copyright 2017 The Gitea Authors. All rights reserved.
2014-07-26 08:24:27 +04:00
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package auth
import (
2015-11-04 02:40:52 +03:00
"net/url"
"strings"
2016-11-10 19:24:48 +03:00
"code.gitea.io/gitea/models"
2019-02-18 23:55:04 +03:00
"code.gitea.io/gitea/modules/setting"
2018-09-10 17:31:08 +03:00
"code.gitea.io/gitea/routers/utils"
2019-08-23 19:40:30 +03:00
"gitea.com/macaron/binding"
"gitea.com/macaron/macaron"
"github.com/unknwon/com"
2014-07-26 08:24:27 +04:00
)
// _______________________________________ _________.______________________ _______________.___.
// \______ \_ _____/\______ \_____ \ / _____/| \__ ___/\_____ \\______ \__ | |
// | _/| __)_ | ___// | \ \_____ \ | | | | / | \| _// | |
// | | \| \ | | / | \/ \| | | | / | \ | \\____ |
// |____|_ /_______ / |____| \_______ /_______ /|___| |____| \_______ /____|_ // ______|
// \/ \/ \/ \/ \/ \/ \/
2016-11-27 09:03:59 +03:00
// CreateRepoForm form for creating repository
2015-08-28 13:33:09 +03:00
type CreateRepoForm struct {
2016-11-27 09:03:59 +03:00
UID int64 ` binding:"Required" `
2015-08-28 11:44:04 +03:00
RepoName string ` binding:"Required;AlphaDashDot;MaxSize(100)" `
Private bool
Description string ` binding:"MaxSize(255)" `
2015-08-28 13:33:09 +03:00
AutoInit bool
Gitignores string
License string
Readme string
2014-07-26 08:24:27 +04:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2014-10-15 19:19:20 +04:00
func ( f * CreateRepoForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2014-07-26 08:24:27 +04:00
}
2016-11-27 09:03:59 +03:00
// MigrateRepoForm form for migrating repository
2014-07-26 08:24:27 +04:00
type MigrateRepoForm struct {
2017-11-13 10:02:25 +03:00
// required: true
2015-09-03 13:48:52 +03:00
CloneAddr string ` json:"clone_addr" binding:"Required" `
AuthUsername string ` json:"auth_username" `
AuthPassword string ` json:"auth_password" `
2017-11-13 10:02:25 +03:00
// required: true
UID int64 ` json:"uid" binding:"Required" `
// required: true
2019-05-07 04:12:51 +03:00
RepoName string ` json:"repo_name" binding:"Required;AlphaDashDot;MaxSize(100)" `
Mirror bool ` json:"mirror" `
Private bool ` json:"private" `
Description string ` json:"description" binding:"MaxSize(255)" `
Wiki bool ` json:"wiki" `
Milestones bool ` json:"milestones" `
Labels bool ` json:"labels" `
Issues bool ` json:"issues" `
PullRequests bool ` json:"pull_requests" `
Releases bool ` json:"releases" `
2014-07-26 08:24:27 +04:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2014-10-15 19:19:20 +04:00
func ( f * MigrateRepoForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2014-07-26 08:24:27 +04:00
}
2015-11-04 02:40:52 +03:00
// ParseRemoteAddr checks if given remote address is valid,
2016-11-21 22:08:21 +03:00
// and returns composed URL with needed username and password.
2015-11-04 02:40:52 +03:00
// It also checks if given user has permission when remote address
// is actually a local path.
func ( f MigrateRepoForm ) ParseRemoteAddr ( user * models . User ) ( string , error ) {
2016-02-21 01:32:34 +03:00
remoteAddr := strings . TrimSpace ( f . CloneAddr )
2015-11-04 02:40:52 +03:00
// Remote address can be HTTP/HTTPS/Git URL or local path.
if strings . HasPrefix ( remoteAddr , "http://" ) ||
strings . HasPrefix ( remoteAddr , "https://" ) ||
strings . HasPrefix ( remoteAddr , "git://" ) {
u , err := url . Parse ( remoteAddr )
if err != nil {
return "" , models . ErrInvalidCloneAddr { IsURLError : true }
}
if len ( f . AuthUsername ) + len ( f . AuthPassword ) > 0 {
u . User = url . UserPassword ( f . AuthUsername , f . AuthPassword )
}
remoteAddr = u . String ( )
} else if ! user . CanImportLocal ( ) {
return "" , models . ErrInvalidCloneAddr { IsPermissionDenied : true }
} else if ! com . IsDir ( remoteAddr ) {
return "" , models . ErrInvalidCloneAddr { IsInvalidPath : true }
}
return remoteAddr , nil
}
2016-11-27 09:03:59 +03:00
// RepoSettingForm form for changing repository settings
2014-07-26 08:24:27 +04:00
type RepoSettingForm struct {
2019-08-17 00:56:57 +03:00
RepoName string ` binding:"Required;AlphaDashDot;MaxSize(100)" `
Description string ` binding:"MaxSize(255)" `
Website string ` binding:"ValidUrl;MaxSize(255)" `
Interval string
MirrorAddress string
MirrorUsername string
MirrorPassword string
Private bool
EnablePrune bool
2015-12-05 05:30:33 +03:00
// Advanced settings
2017-09-12 09:48:13 +03:00
EnableWiki bool
EnableExternalWiki bool
ExternalWikiURL string
EnableIssues bool
EnableExternalTracker bool
ExternalTrackerURL string
TrackerURLFormat string
TrackerIssueStyle string
EnablePulls bool
2018-01-05 21:56:50 +03:00
PullsIgnoreWhitespace bool
PullsAllowMerge bool
PullsAllowRebase bool
2018-12-27 13:27:08 +03:00
PullsAllowRebaseMerge bool
2018-01-05 21:56:50 +03:00
PullsAllowSquash bool
2017-09-12 09:48:13 +03:00
EnableTimetracker bool
AllowOnlyContributorsToTrackTime bool
2018-07-18 00:23:58 +03:00
EnableIssueDependencies bool
2019-01-23 21:58:38 +03:00
IsArchived bool
2018-03-27 17:13:20 +03:00
// Admin settings
2019-02-10 22:27:19 +03:00
EnableHealthCheck bool
EnableCloseIssuesViaCommitInAnyBranch bool
2014-07-26 08:24:27 +04:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2014-10-15 19:19:20 +04:00
func ( f * RepoSettingForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2014-07-26 08:24:27 +04:00
}
2017-09-14 11:16:22 +03:00
// __________ .__
// \______ \____________ ____ ____ | |__
// | | _/\_ __ \__ \ / \_/ ___\| | \
// | | \ | | \// __ \| | \ \___| Y \
// |______ / |__| (____ /___| /\___ >___| /
// \/ \/ \/ \/ \/
// ProtectBranchForm form for changing protected branch settings
type ProtectBranchForm struct {
2018-12-11 14:28:37 +03:00
Protected bool
EnableWhitelist bool
WhitelistUsers string
WhitelistTeams string
EnableMergeWhitelist bool
MergeWhitelistUsers string
MergeWhitelistTeams string
RequiredApprovals int64
ApprovalsWhitelistUsers string
ApprovalsWhitelistTeams string
2017-09-14 11:16:22 +03:00
}
// Validate validates the fields
func ( f * ProtectBranchForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
2014-07-26 08:24:27 +04:00
// __ __ ___. .__ .__ __
// / \ / \ ____\_ |__ | |__ | |__ ____ | | __
// \ \/\/ // __ \| __ \| | \| | \ / _ \| |/ /
// \ /\ ___/| \_\ \ Y \ Y ( <_> ) <
// \__/\ / \___ >___ /___| /___| /\____/|__|_ \
// \/ \/ \/ \/ \/ \/
2016-11-27 09:03:59 +03:00
// WebhookForm form for changing web hook
2015-08-26 19:30:06 +03:00
type WebhookForm struct {
2018-05-16 17:01:55 +03:00
Events string
Create bool
Delete bool
Fork bool
Issues bool
IssueComment bool
Release bool
Push bool
PullRequest bool
Repository bool
Active bool
2015-08-28 18:36:13 +03:00
}
2016-11-27 09:03:59 +03:00
// PushOnly if the hook will be triggered when push
2015-08-28 18:36:13 +03:00
func ( f WebhookForm ) PushOnly ( ) bool {
return f . Events == "push_only"
}
2016-11-27 09:03:59 +03:00
// SendEverything if the hook will be triggered any event
2015-08-28 18:36:13 +03:00
func ( f WebhookForm ) SendEverything ( ) bool {
return f . Events == "send_everything"
}
2016-11-27 09:03:59 +03:00
// ChooseEvents if the hook will be triggered choose events
2015-08-28 18:36:13 +03:00
func ( f WebhookForm ) ChooseEvents ( ) bool {
return f . Events == "choose_events"
2015-08-26 19:30:06 +03:00
}
2016-11-27 09:03:59 +03:00
// NewWebhookForm form for creating web hook
2014-07-26 08:24:27 +04:00
type NewWebhookForm struct {
2017-04-19 06:02:20 +03:00
PayloadURL string ` binding:"Required;ValidUrl" `
2019-05-05 21:09:02 +03:00
HTTPMethod string ` binding:"Required;In(POST,GET)" `
2015-08-26 19:30:06 +03:00
ContentType int ` binding:"Required" `
Secret string
WebhookForm
2014-07-26 08:24:27 +04:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2014-10-15 19:19:20 +04:00
func ( f * NewWebhookForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2014-07-26 08:24:27 +04:00
}
2017-05-29 10:17:15 +03:00
// NewGogshookForm form for creating gogs hook
type NewGogshookForm struct {
PayloadURL string ` binding:"Required;ValidUrl" `
ContentType int ` binding:"Required" `
Secret string
WebhookForm
}
// Validate validates the fields
func ( f * NewGogshookForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
2016-11-27 09:03:59 +03:00
// NewSlackHookForm form for creating slack hook
2014-08-24 16:59:47 +04:00
type NewSlackHookForm struct {
2017-04-19 06:02:20 +03:00
PayloadURL string ` binding:"Required;ValidUrl" `
2015-08-26 19:30:06 +03:00
Channel string ` binding:"Required" `
2015-08-29 06:49:59 +03:00
Username string
IconURL string
Color string
2015-08-26 19:30:06 +03:00
WebhookForm
2014-08-24 16:59:47 +04:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2014-10-15 19:19:20 +04:00
func ( f * NewSlackHookForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2014-08-24 16:59:47 +04:00
}
2018-09-10 17:31:08 +03:00
// HasInvalidChannel validates the channel name is in the right format
func ( f NewSlackHookForm ) HasInvalidChannel ( ) bool {
return ! utils . IsValidSlackChannel ( f . Channel )
}
2017-08-28 08:06:45 +03:00
// NewDiscordHookForm form for creating discord hook
type NewDiscordHookForm struct {
PayloadURL string ` binding:"Required;ValidUrl" `
Username string
IconURL string
WebhookForm
}
// Validate validates the fields
func ( f * NewDiscordHookForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2017-11-21 07:26:43 +03:00
}
// NewDingtalkHookForm form for creating dingtalk hook
type NewDingtalkHookForm struct {
PayloadURL string ` binding:"Required;ValidUrl" `
WebhookForm
}
// Validate validates the fields
func ( f * NewDingtalkHookForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
2019-04-19 05:45:02 +03:00
return validate ( errs , ctx . Data , f , ctx . Locale )
}
// NewTelegramHookForm form for creating telegram hook
type NewTelegramHookForm struct {
BotToken string ` binding:"Required" `
ChatID string ` binding:"Required" `
WebhookForm
}
// Validate validates the fields
func ( f * NewTelegramHookForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
2019-04-19 17:18:06 +03:00
return validate ( errs , ctx . Data , f , ctx . Locale )
}
// NewMSTeamsHookForm form for creating MS Teams hook
type NewMSTeamsHookForm struct {
PayloadURL string ` binding:"Required;ValidUrl" `
WebhookForm
}
// Validate validates the fields
func ( f * NewMSTeamsHookForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
2017-11-21 07:26:43 +03:00
return validate ( errs , ctx . Data , f , ctx . Locale )
2017-08-28 08:06:45 +03:00
}
2014-07-26 08:24:27 +04:00
// .___
// | | ______ ________ __ ____
// | |/ ___// ___/ | \_/ __ \
// | |\___ \ \___ \| | /\ ___/
// |___/____ >____ >____/ \___ >
// \/ \/ \/
2016-11-27 09:03:59 +03:00
// CreateIssueForm form for creating issue
2014-07-26 08:24:27 +04:00
type CreateIssueForm struct {
2015-08-10 11:52:08 +03:00
Title string ` binding:"Required;MaxSize(255)" `
LabelIDs string ` form:"label_ids" `
2018-05-09 19:29:04 +03:00
AssigneeIDs string ` form:"assignee_ids" `
2017-08-24 15:30:27 +03:00
Ref string ` form:"ref" `
2015-08-09 10:23:02 +03:00
MilestoneID int64
AssigneeID int64
Content string
2016-08-11 15:48:08 +03:00
Files [ ] string
2014-07-26 08:24:27 +04:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2014-10-15 19:19:20 +04:00
func ( f * CreateIssueForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2014-07-26 08:24:27 +04:00
}
2016-11-27 09:03:59 +03:00
// CreateCommentForm form for creating comment
2015-08-13 11:07:11 +03:00
type CreateCommentForm struct {
2016-08-11 15:48:08 +03:00
Content string
Status string ` binding:"OmitEmpty;In(reopen,close)" `
Files [ ] string
2015-08-13 11:07:11 +03:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2015-08-13 11:07:11 +03:00
func ( f * CreateCommentForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2017-12-04 02:14:26 +03:00
}
// ReactionForm form for adding and removing reaction
type ReactionForm struct {
Content string ` binding:"Required;In(+1,-1,laugh,confused,heart,hooray)" `
}
// Validate validates the fields
func ( f * ReactionForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2015-08-13 11:07:11 +03:00
}
2019-02-18 23:55:04 +03:00
// IssueLockForm form for locking an issue
type IssueLockForm struct {
Reason string ` binding:"Required" `
}
// Validate validates the fields
func ( i * IssueLockForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , i , ctx . Locale )
}
// HasValidReason checks to make sure that the reason submitted in
// the form matches any of the values in the config
func ( i IssueLockForm ) HasValidReason ( ) bool {
if strings . TrimSpace ( i . Reason ) == "" {
return true
}
for _ , v := range setting . Repository . Issue . LockReasons {
if v == i . Reason {
return true
}
}
return false
}
2014-07-26 08:24:27 +04:00
// _____ .__.__ __
// / \ |__| | ____ _______/ |_ ____ ____ ____
// / \ / \| | | _/ __ \ / ___/\ __\/ _ \ / \_/ __ \
// / Y \ | |_\ ___/ \___ \ | | ( <_> ) | \ ___/
// \____|__ /__|____/\___ >____ > |__| \____/|___| /\___ >
// \/ \/ \/ \/ \/
2016-11-27 09:03:59 +03:00
// CreateMilestoneForm form for creating milestone
2014-07-26 08:24:27 +04:00
type CreateMilestoneForm struct {
2015-08-05 10:24:26 +03:00
Title string ` binding:"Required;MaxSize(50)" `
Content string
Deadline string
2014-07-26 08:24:27 +04:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2014-10-15 19:19:20 +04:00
func ( f * CreateMilestoneForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2014-07-26 08:24:27 +04:00
}
// .____ ___. .__
// | | _____ \_ |__ ____ | |
// | | \__ \ | __ \_/ __ \| |
// | |___ / __ \| \_\ \ ___/| |__
// |_______ (____ /___ /\___ >____/
// \/ \/ \/ \/
2016-11-27 09:03:59 +03:00
// CreateLabelForm form for creating label
2014-07-26 08:24:27 +04:00
type CreateLabelForm struct {
2018-03-13 05:03:55 +03:00
ID int64
Title string ` binding:"Required;MaxSize(50)" locale:"repo.issues.label_title" `
Description string ` binding:"MaxSize(200)" locale:"repo.issues.label_description" `
Color string ` binding:"Required;Size(7)" locale:"repo.issues.label_color" `
2014-07-26 08:24:27 +04:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2014-10-15 19:19:20 +04:00
func ( f * CreateLabelForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2014-07-26 08:24:27 +04:00
}
2016-11-27 09:03:59 +03:00
// InitializeLabelsForm form for initializing labels
2016-08-30 05:02:49 +03:00
type InitializeLabelsForm struct {
TemplateName string ` binding:"Required" `
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2016-08-30 05:02:49 +03:00
func ( f * InitializeLabelsForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
2018-01-05 21:56:50 +03:00
// __________ .__ .__ __________ __
// \______ \__ __| | | | \______ \ ____ ________ __ ____ _______/ |_
// | ___/ | \ | | | | _// __ \/ ____/ | \_/ __ \ / ___/\ __\
// | | | | / |_| |__ | | \ ___< <_| | | /\ ___/ \___ \ | |
// |____| |____/|____/____/ |____|_ /\___ >__ |____/ \___ >____ > |__|
// \/ \/ |__| \/ \/
// MergePullRequestForm form for merging Pull Request
2019-02-08 11:08:38 +03:00
// swagger:model MergePullRequestOption
2018-01-05 21:56:50 +03:00
type MergePullRequestForm struct {
2019-02-08 11:08:38 +03:00
// required: true
2019-02-09 15:48:28 +03:00
// enum: merge,rebase,rebase-merge,squash
2018-12-27 13:27:08 +03:00
Do string ` binding:"Required;In(merge,rebase,rebase-merge,squash)" `
2018-01-05 21:56:50 +03:00
MergeTitleField string
MergeMessageField string
}
// Validate validates the fields
func ( f * MergePullRequestForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
2018-08-06 07:43:22 +03:00
// CodeCommentForm form for adding code comments for PRs
type CodeCommentForm struct {
Content string ` binding:"Required" `
Side string ` binding:"Required;In(previous,proposed)" `
Line int64
TreePath string ` form:"path" binding:"Required" `
IsReview bool ` form:"is_review" `
2018-10-22 23:13:35 +03:00
Reply int64 ` form:"reply" `
2018-08-06 07:43:22 +03:00
}
// Validate validates the fields
func ( f * CodeCommentForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
// SubmitReviewForm for submitting a finished code review
type SubmitReviewForm struct {
Content string
Type string ` binding:"Required;In(approve,comment,reject)" `
}
// Validate validates the fields
func ( f * SubmitReviewForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
// ReviewType will return the corresponding reviewtype for type
func ( f SubmitReviewForm ) ReviewType ( ) models . ReviewType {
switch f . Type {
case "approve" :
return models . ReviewTypeApprove
case "comment" :
return models . ReviewTypeComment
case "reject" :
return models . ReviewTypeReject
default :
return models . ReviewTypeUnknown
}
}
2018-08-07 20:15:41 +03:00
// HasEmptyContent checks if the content of the review form is empty.
func ( f SubmitReviewForm ) HasEmptyContent ( ) bool {
reviewType := f . ReviewType ( )
return ( reviewType == models . ReviewTypeComment || reviewType == models . ReviewTypeReject ) &&
len ( strings . TrimSpace ( f . Content ) ) == 0
}
2014-07-26 08:24:27 +04:00
// __________ .__
// \______ \ ____ | | ____ _____ ______ ____
// | _// __ \| | _/ __ \\__ \ / ___// __ \
// | | \ ___/| |_\ ___/ / __ \_\___ \\ ___/
// |____|_ /\___ >____/\___ >____ /____ >\___ >
// \/ \/ \/ \/ \/ \/
2016-11-27 09:03:59 +03:00
// NewReleaseForm form for creating release
2014-07-26 08:24:27 +04:00
type NewReleaseForm struct {
2018-06-04 08:34:44 +03:00
TagName string ` binding:"Required;GitRefName" `
2014-07-26 08:24:27 +04:00
Target string ` form:"tag_target" binding:"Required" `
2015-11-16 07:52:46 +03:00
Title string ` binding:"Required" `
Content string
Draft string
Prerelease bool
2017-01-25 10:23:20 +03:00
Files [ ] string
2014-07-26 08:24:27 +04:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2014-10-15 19:19:20 +04:00
func ( f * NewReleaseForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2014-07-26 08:24:27 +04:00
}
2016-11-27 09:03:59 +03:00
// EditReleaseForm form for changing release
2014-07-26 08:24:27 +04:00
type EditReleaseForm struct {
Title string ` form:"title" binding:"Required" `
2016-01-30 16:39:02 +03:00
Content string ` form:"content" `
2014-07-26 08:24:27 +04:00
Draft string ` form:"draft" `
Prerelease bool ` form:"prerelease" `
2017-01-25 10:23:20 +03:00
Files [ ] string
2014-07-26 08:24:27 +04:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2014-10-15 19:19:20 +04:00
func ( f * EditReleaseForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
2014-07-26 08:24:27 +04:00
}
2015-11-27 01:33:45 +03:00
// __ __.__ __ .__
// / \ / \__| | _|__|
// \ \/\/ / | |/ / |
// \ /| | <| |
// \__/\ / |__|__|_ \__|
// \/ \/
2016-11-27 09:03:59 +03:00
// NewWikiForm form for creating wiki
2015-11-27 01:33:45 +03:00
type NewWikiForm struct {
2017-11-29 23:52:34 +03:00
Title string ` binding:"Required" `
Content string ` binding:"Required" `
Message string
2015-11-27 01:33:45 +03:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2015-11-27 01:33:45 +03:00
// FIXME: use code generation to generate this method.
func ( f * NewWikiForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
2016-08-11 15:48:08 +03:00
// ___________ .___.__ __
// \_ _____/ __| _/|__|/ |_
// | __)_ / __ | | \ __\
// | \/ /_/ | | || |
// /_______ /\____ | |__||__|
// \/ \/
2016-11-27 09:03:59 +03:00
// EditRepoFileForm form for changing repository file
2016-08-11 15:48:08 +03:00
type EditRepoFileForm struct {
2016-08-25 07:35:03 +03:00
TreePath string ` binding:"Required;MaxSize(500)" `
2016-08-11 15:48:08 +03:00
Content string ` binding:"Required" `
2016-11-04 14:28:56 +03:00
CommitSummary string ` binding:"MaxSize(100)" `
2016-08-11 15:48:08 +03:00
CommitMessage string
CommitChoice string ` binding:"Required;MaxSize(50)" `
2017-04-19 06:02:20 +03:00
NewBranchName string ` binding:"GitRefName;MaxSize(100)" `
2016-08-11 15:48:08 +03:00
LastCommit string
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2016-08-11 15:48:08 +03:00
func ( f * EditRepoFileForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
2016-11-27 09:03:59 +03:00
// EditPreviewDiffForm form for changing preview diff
2016-08-11 15:48:08 +03:00
type EditPreviewDiffForm struct {
Content string
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2016-08-11 15:48:08 +03:00
func ( f * EditPreviewDiffForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
// ____ ___ .__ .___
// | | \______ | | _________ __| _/
// | | /\____ \| | / _ \__ \ / __ |
// | | / | |_> > |_( <_> ) __ \_/ /_/ |
// |______/ | __/|____/\____(____ /\____ |
// |__| \/ \/
//
2016-11-27 09:03:59 +03:00
// UploadRepoFileForm form for uploading repository file
2016-08-11 15:48:08 +03:00
type UploadRepoFileForm struct {
2016-11-04 14:28:56 +03:00
TreePath string ` binding:"MaxSize(500)" `
CommitSummary string ` binding:"MaxSize(100)" `
2016-08-11 15:48:08 +03:00
CommitMessage string
CommitChoice string ` binding:"Required;MaxSize(50)" `
2017-04-19 06:02:20 +03:00
NewBranchName string ` binding:"GitRefName;MaxSize(100)" `
2016-08-11 15:48:08 +03:00
Files [ ] string
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2016-08-11 15:48:08 +03:00
func ( f * UploadRepoFileForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
2016-11-27 09:03:59 +03:00
// RemoveUploadFileForm form for removing uploaded file
2016-08-11 15:48:08 +03:00
type RemoveUploadFileForm struct {
File string ` binding:"Required;MaxSize(50)" `
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2016-08-11 15:48:08 +03:00
func ( f * RemoveUploadFileForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
// ________ .__ __
// \______ \ ____ | | _____/ |_ ____
// | | \_/ __ \| | _/ __ \ __\/ __ \
// | ` \ ___/| |_\ ___/| | \ ___/
// /_______ /\___ >____/\___ >__| \___ >
// \/ \/ \/ \/
2016-11-27 09:03:59 +03:00
// DeleteRepoFileForm form for deleting repository file
2016-08-11 15:48:08 +03:00
type DeleteRepoFileForm struct {
2016-11-04 14:28:56 +03:00
CommitSummary string ` binding:"MaxSize(100)" `
2016-08-28 11:41:44 +03:00
CommitMessage string
CommitChoice string ` binding:"Required;MaxSize(50)" `
2017-04-19 06:02:20 +03:00
NewBranchName string ` binding:"GitRefName;MaxSize(100)" `
2019-04-17 19:06:35 +03:00
LastCommit string
2016-08-11 15:48:08 +03:00
}
2017-03-15 03:52:01 +03:00
// Validate validates the fields
2016-08-11 15:48:08 +03:00
func ( f * DeleteRepoFileForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
2017-09-12 09:48:13 +03:00
// ___________.__ ___________ __
// \__ ___/|__| _____ ____ \__ ___/___________ ____ | | __ ___________
// | | | |/ \_/ __ \ | | \_ __ \__ \ _/ ___\| |/ // __ \_ __ \
// | | | | Y Y \ ___/ | | | | \// __ \\ \___| <\ ___/| | \/
// |____| |__|__|_| /\___ > |____| |__| (____ /\___ >__|_ \\___ >__|
// \/ \/ \/ \/ \/ \/
// AddTimeManuallyForm form that adds spent time manually.
type AddTimeManuallyForm struct {
Hours int ` binding:"Range(0,1000)" `
Minutes int ` binding:"Range(0,1000)" `
}
// Validate validates the fields
func ( f * AddTimeManuallyForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}
2018-04-11 05:51:44 +03:00
// SaveTopicForm form for save topics for repository
type SaveTopicForm struct {
Topics [ ] string ` binding:"topics;Required;" `
}
2018-05-01 22:05:28 +03:00
// DeadlineForm hold the validation rules for deadlines
type DeadlineForm struct {
DateString string ` form:"date" binding:"Required;Size(10)" `
}
// Validate validates the fields
func ( f * DeadlineForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validate ( errs , ctx . Data , f , ctx . Locale )
}