@ -21,22 +21,23 @@ import ( 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					)  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					const  (  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SETTINGS_PROFILE        base . TplName  =  "user/settings/profile"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SETTINGS_AVATAR         base . TplName  =  "user/settings/avatar"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SETTINGS_PASSWORD       base . TplName  =  "user/settings/password"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SETTINGS_EMAILS         base . TplName  =  "user/settings/email"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SETTINGS_SSH_KEYS       base . TplName  =  "user/settings/sshkeys"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SETTINGS_SOCIAL         base . TplName  =  "user/settings/social"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SETTINGS_APPLICATIONS   base . TplName  =  "user/settings/applications"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SETTINGS_DELETE         base . TplName  =  "user/settings/delete"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						NOTIFICATION            base . TplName  =  "user/notification"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						SECURITY                base . TplName  =  "user/security"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						tplSettingsProfile        base . TplName  =  "user/settings/profile"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						tplSettingsAvatar         base . TplName  =  "user/settings/avatar"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						tplSettingsPassword       base . TplName  =  "user/settings/password"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						tplSettingsEmails         base . TplName  =  "user/settings/email"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						tplSettingsSSHKeys        base . TplName  =  "user/settings/sshkeys"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						tplSettingsSocial         base . TplName  =  "user/settings/social"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						tplSettingsApplications   base . TplName  =  "user/settings/applications"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						tplSettingsDelete         base . TplName  =  "user/settings/delete"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						tplNotification           base . TplName  =  "user/notification"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						tplSecurity               base . TplName  =  "user/security"   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					)  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// Settings render user's profile page
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  Settings ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsProfile" ]  =  true   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  SETTINGS_PROFILE )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  tplSettingsProfile )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  handleUsernameChange ( ctx  * context . Context ,  newName  string )  {  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -74,12 +75,13 @@ func handleUsernameChange(ctx *context.Context, newName string) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . User . LowerName  =  strings . ToLower ( newName )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsPost response for change user's profile
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsPost ( ctx  * context . Context ,  form  auth . UpdateProfileForm )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsProfile" ]  =  true   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ctx . HasError ( )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . HTML ( 200 ,  SETTINGS_PROFILE )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . HTML ( 200 ,  tplSettingsProfile )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -102,6 +104,7 @@ func SettingsPost(ctx *context.Context, form auth.UpdateProfileForm) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Redirect ( setting . AppSubUrl  +  "/user/settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// UpdateAvatarSetting update user's avatar
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// FIXME: limit size.
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  UpdateAvatarSetting ( ctx  * context . Context ,  form  auth . AvatarForm ,  ctxUser  * models . User )  error  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctxUser . UseCustomAvatar  =  form . Source  ==  auth . AvatarLocal   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -144,12 +147,14 @@ func UpdateAvatarSetting(ctx *context.Context, form auth.AvatarForm, ctxUser *mo 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						return  nil   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsAvatar render user avatar page
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsAvatar ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsAvatar" ]  =  true   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  SETTINGS_AVATAR )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  tplSettingsAvatar )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsAvatarPost response for change user's avatar request
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsAvatarPost ( ctx  * context . Context ,  form  auth . AvatarForm )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  err  :=  UpdateAvatarSetting ( ctx ,  form ,  ctx . User ) ;  err  !=  nil  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . Flash . Error ( err . Error ( ) )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -160,6 +165,7 @@ func SettingsAvatarPost(ctx *context.Context, form auth.AvatarForm) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Redirect ( setting . AppSubUrl  +  "/user/settings/avatar" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsDeleteAvatar render delete avatar page
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsDeleteAvatar ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  err  :=  ctx . User . DeleteAvatar ( ) ;  err  !=  nil  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . Flash . Error ( err . Error ( ) )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -168,18 +174,20 @@ func SettingsDeleteAvatar(ctx *context.Context) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Redirect ( setting . AppSubUrl  +  "/user/settings/avatar" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsPassword render change user's password page
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsPassword ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsPassword" ]  =  true   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  SETTINGS_PASSWORD )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  tplSettingsPassword )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsPasswordPost response for change user's password
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsPasswordPost ( ctx  * context . Context ,  form  auth . ChangePasswordForm )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsPassword" ]  =  true   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ctx . HasError ( )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . HTML ( 200 ,  SETTINGS_PASSWORD )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . HTML ( 200 ,  tplSettingsPassword )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -202,6 +210,7 @@ func SettingsPasswordPost(ctx *context.Context, form auth.ChangePasswordForm) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Redirect ( setting . AppSubUrl  +  "/user/settings/password" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsEmails render user's emails page
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsEmails ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsEmails" ]  =  true   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -213,9 +222,10 @@ func SettingsEmails(ctx *context.Context) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Emails" ]  =  emails   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  SETTINGS_EMAILS )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  tplSettingsEmails )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsEmailPost response for change user's email
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsEmailPost ( ctx  * context . Context ,  form  auth . AddEmailForm )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsEmails" ]  =  true   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -241,7 +251,7 @@ func SettingsEmailPost(ctx *context.Context, form auth.AddEmailForm) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Emails" ]  =  emails   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ctx . HasError ( )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . HTML ( 200 ,  SETTINGS_EMAILS )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . HTML ( 200 ,  tplSettingsEmails )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -252,7 +262,7 @@ func SettingsEmailPost(ctx *context.Context, form auth.AddEmailForm) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  err  :=  models . AddEmailAddress ( email ) ;  err  !=  nil  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							if  models . IsErrEmailAlreadyUsed ( err )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								ctx . RenderWithErr ( ctx . Tr ( "form.email_been_used" ) ,  SETTINGS_EMAILS ,  & form )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								ctx . RenderWithErr ( ctx . Tr ( "form.email_been_used" ) ,  tplSettingsEmails ,  & form )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . Handle ( 500 ,  "AddEmailAddress" ,  err )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -275,6 +285,7 @@ func SettingsEmailPost(ctx *context.Context, form auth.AddEmailForm) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Redirect ( setting . AppSubUrl  +  "/user/settings/email" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// DeleteEmail reponse for delete user's email
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  DeleteEmail ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  err  :=  models . DeleteEmailAddress ( & models . EmailAddress { ID :  ctx . QueryInt64 ( "id" ) } ) ;  err  !=  nil  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . Handle ( 500 ,  "DeleteEmail" ,  err )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -288,6 +299,7 @@ func DeleteEmail(ctx *context.Context) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						} )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsSSHKeys render user's SSH public keys page
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsSSHKeys ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsSSHKeys" ]  =  true   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -299,9 +311,10 @@ func SettingsSSHKeys(ctx *context.Context) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Keys" ]  =  keys   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  SETTINGS_SSH_KEYS )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  tplSettingsSSHKeys )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsSSHKeysPost response for change user's SSH keys
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsSSHKeysPost ( ctx  * context . Context ,  form  auth . AddSSHKeyForm )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsSSHKeys" ]  =  true   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -314,7 +327,7 @@ func SettingsSSHKeysPost(ctx *context.Context, form auth.AddSSHKeyForm) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Keys" ]  =  keys   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ctx . HasError ( )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . HTML ( 200 ,  SETTINGS_SSH_KEYS )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . HTML ( 200 ,  tplSettingsSSHKeys )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -334,10 +347,10 @@ func SettingsSSHKeysPost(ctx *context.Context, form auth.AddSSHKeyForm) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							switch  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  models . IsErrKeyAlreadyExist ( err ) :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								ctx . Data [ "Err_Content" ]  =  true   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								ctx . RenderWithErr ( ctx . Tr ( "settings.ssh_key_been_used" ) ,  SETTINGS_SSH_KEYS ,  & form )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								ctx . RenderWithErr ( ctx . Tr ( "settings.ssh_key_been_used" ) ,  tplSettingsSSHKeys ,  & form )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							case  models . IsErrKeyNameAlreadyUsed ( err ) :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								ctx . Data [ "Err_Title" ]  =  true   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								ctx . RenderWithErr ( ctx . Tr ( "settings.ssh_key_name_used" ) ,  SETTINGS_SSH_KEYS ,  & form )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								ctx . RenderWithErr ( ctx . Tr ( "settings.ssh_key_name_used" ) ,  tplSettingsSSHKeys ,  & form )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							default :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								ctx . Handle ( 500 ,  "AddPublicKey" ,  err )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							}   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -348,6 +361,7 @@ func SettingsSSHKeysPost(ctx *context.Context, form auth.AddSSHKeyForm) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Redirect ( setting . AppSubUrl  +  "/user/settings/ssh" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// DeleteSSHKey response for delete user's SSH key
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  DeleteSSHKey ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  err  :=  models . DeletePublicKey ( ctx . User ,  ctx . QueryInt64 ( "id" ) ) ;  err  !=  nil  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . Flash . Error ( "DeletePublicKey: "  +  err . Error ( ) )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -360,6 +374,7 @@ func DeleteSSHKey(ctx *context.Context) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						} )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsApplications render user's access tokens page
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsApplications ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsApplications" ]  =  true   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -371,9 +386,10 @@ func SettingsApplications(ctx *context.Context) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Tokens" ]  =  tokens   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  SETTINGS_APPLICATIONS )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  tplSettingsApplications )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsApplicationsPost response for add user's access token
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsApplicationsPost ( ctx  * context . Context ,  form  auth . NewAccessTokenForm )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsApplications" ]  =  true   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -385,7 +401,7 @@ func SettingsApplicationsPost(ctx *context.Context, form auth.NewAccessTokenForm 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								return   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . Data [ "Tokens" ]  =  tokens   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . HTML ( 200 ,  SETTINGS_APPLICATIONS )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . HTML ( 200 ,  tplSettingsApplications )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -404,6 +420,7 @@ func SettingsApplicationsPost(ctx *context.Context, form auth.NewAccessTokenForm 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Redirect ( setting . AppSubUrl  +  "/user/settings/applications" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsDeleteApplication response for delete user access token
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsDeleteApplication ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  err  :=  models . DeleteAccessTokenByID ( ctx . QueryInt64 ( "id" ) ) ;  err  !=  nil  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							ctx . Flash . Error ( "DeleteAccessTokenByID: "  +  err . Error ( ) )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -416,6 +433,7 @@ func SettingsDeleteApplication(ctx *context.Context) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						} )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					// SettingsDelete render user suicide page and response for delete user himself
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					func  SettingsDelete ( ctx  * context . Context )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "Title" ]  =  ctx . Tr ( "settings" )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . Data [ "PageIsSettingsDelete" ]  =  true   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -423,7 +441,7 @@ func SettingsDelete(ctx *context.Context) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ctx . Req . Method  ==  "POST"  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							if  _ ,  err  :=  models . UserSignIn ( ctx . User . Name ,  ctx . Query ( "password" ) ) ;  err  !=  nil  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								if  models . IsErrUserNotExist ( err )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									ctx . RenderWithErr ( ctx . Tr ( "form.enterred_invalid_password" ) ,  SETTINGS_DELETE ,  nil )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									ctx . RenderWithErr ( ctx . Tr ( "form.enterred_invalid_password" ) ,  tplSettingsDelete ,  nil )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								}  else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
									ctx . Handle ( 500 ,  "UserSignIn" ,  err )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								}   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -448,5 +466,5 @@ func SettingsDelete(ctx *context.Context) { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  SETTINGS_DELETE )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ctx . HTML ( 200 ,  tplSettingsDelete )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}