@@ -23,16 +23,6 @@ import (
2323func configGinUsersRouter (router * gin.Engine , daoWrapper dao.DaoWrapper ) {
2424 routes := usersRoutes {daoWrapper }
2525
26- router .POST ("/api/users/settings/name" , routes .updatePreferredName )
27- router .POST ("/api/users/settings/greeting" , routes .updatePreferredGreeting )
28- router .POST ("/api/users/settings/playbackSpeeds" , routes .updatePlaybackSpeeds )
29- router .POST ("/api/users/settings/seekingTime" , routes .updateSeekingTime )
30- router .POST ("/api/users/settings/customSpeeds" , routes .updateCustomSpeeds )
31- router .POST ("/api/users/settings/autoSkip" , routes .updateAutoSkip )
32- router .POST ("api/users/settings/lectureView" , routes .updatePreferredView )
33-
34- router .POST ("/api/users/resetPassword" , routes .resetPassword )
35-
3626 courses := router .Group ("/api/users/courses" )
3727 {
3828 courses .GET ("/:id/pin" , routes .getPinForCourse )
@@ -556,249 +546,6 @@ func (r usersRoutes) forgotPassword(email string) {
556546 }
557547}
558548
559- type userSettingsRequest struct {
560- Value string `json:"value"`
561- }
562-
563- func (r usersRoutes ) updatePreferredName (c * gin.Context ) {
564- u := c .MustGet ("TUMLiveContext" ).(tools.TUMLiveContext ).User
565- if u == nil {
566- _ = c .Error (tools.RequestError {
567- Status : http .StatusUnauthorized ,
568- CustomMessage : "login required" ,
569- })
570- return
571- }
572- var request userSettingsRequest
573- err := json .NewDecoder (c .Request .Body ).Decode (& request )
574- if err != nil {
575- _ = c .Error (tools.RequestError {
576- Status : http .StatusBadRequest ,
577- CustomMessage : "can not bind body" ,
578- Err : err ,
579- })
580- return
581- }
582- for _ , s := range u .Settings {
583- if s .Type == model .PreferredName && time .Since (s .UpdatedAt ) < time .Hour * 24 * 30 * 3 {
584- _ = c .Error (tools.RequestError {
585- Status : http .StatusUnauthorized ,
586- CustomMessage : "preferred name already set within the last 3 months" ,
587- })
588- return
589- }
590- }
591- if len (request .Value ) > 80 {
592- _ = c .Error (tools.RequestError {
593- Status : http .StatusBadRequest ,
594- CustomMessage : "preferred name too long" ,
595- })
596- return
597- }
598- err = r .UsersDao .AddUserSetting (& model.UserSetting {
599- UserID : u .ID ,
600- Type : model .PreferredName ,
601- Value : request .Value ,
602- })
603- if err != nil {
604- _ = c .Error (tools.RequestError {
605- Status : http .StatusInternalServerError ,
606- CustomMessage : "can not add user setting" ,
607- Err : err ,
608- })
609- return
610- }
611- }
612-
613- func getUserFromContext (c * gin.Context ) * model.User {
614- u := c .MustGet ("TUMLiveContext" ).(tools.TUMLiveContext ).User
615- if u == nil {
616- _ = c .Error (tools.RequestError {
617- Status : http .StatusUnauthorized ,
618- CustomMessage : "login required" ,
619- })
620- return nil
621- }
622- return u
623- }
624-
625- func getRequestFromContext (c * gin.Context ) * userSettingsRequest {
626- var request userSettingsRequest
627- err := json .NewDecoder (c .Request .Body ).Decode (& request )
628- if err != nil {
629- _ = c .Error (tools.RequestError {
630- Status : http .StatusBadRequest ,
631- CustomMessage : "can not bind body" ,
632- Err : err ,
633- })
634- return nil
635- }
636- return & request
637- }
638-
639- func (r usersRoutes ) updatePreferredGreeting (c * gin.Context ) {
640- u := getUserFromContext (c )
641- request := getRequestFromContext (c )
642-
643- err := r .UsersDao .AddUserSetting (& model.UserSetting {
644- UserID : u .ID ,
645- Type : model .Greeting ,
646- Value : request .Value ,
647- })
648- if err != nil {
649- _ = c .Error (tools.RequestError {
650- Status : http .StatusInternalServerError ,
651- CustomMessage : "can not add user setting" ,
652- Err : err ,
653- })
654- return
655- }
656- }
657-
658- func (r usersRoutes ) updateCustomSpeeds (c * gin.Context ) {
659- u := c .MustGet ("TUMLiveContext" ).(tools.TUMLiveContext ).User
660- if u == nil {
661- _ = c .Error (tools.RequestError {
662- Status : http .StatusUnauthorized ,
663- CustomMessage : "login required" ,
664- })
665- return
666- }
667-
668- var req struct { Value []float32 }
669- if err := c .BindJSON (& req ); err != nil {
670- _ = c .Error (tools.RequestError {
671- Status : http .StatusBadRequest ,
672- CustomMessage : "can not bind body" ,
673- Err : err ,
674- })
675- return
676- }
677- settingsString := "[]"
678- if len (req .Value ) != 0 {
679- settingBytes , _ := json .Marshal (req .Value )
680- settingsString = string (settingBytes )
681- }
682- err := r .DaoWrapper .AddUserSetting (& model.UserSetting {UserID : u .ID , Type : model .UserDefinedSpeeds , Value : settingsString })
683- if err != nil {
684- _ = c .Error (tools.RequestError {
685- Status : http .StatusInternalServerError ,
686- CustomMessage : "can not add user setting" ,
687- Err : err ,
688- })
689- return
690- }
691- }
692-
693- func (r usersRoutes ) updatePlaybackSpeeds (c * gin.Context ) {
694- u := c .MustGet ("TUMLiveContext" ).(tools.TUMLiveContext ).User
695- if u == nil {
696- _ = c .Error (tools.RequestError {
697- Status : http .StatusUnauthorized ,
698- CustomMessage : "login required for updating user settings" ,
699- })
700- return
701- }
702- var req struct { Value []model.PlaybackSpeedSetting }
703- if err := c .BindJSON (& req ); err != nil {
704- _ = c .Error (tools.RequestError {
705- Status : http .StatusBadRequest ,
706- CustomMessage : "can not bind body to request" ,
707- Err : err ,
708- })
709- return
710- }
711- if len (req .Value ) == 0 {
712- _ = c .Error (tools.RequestError {
713- Status : http .StatusBadRequest ,
714- CustomMessage : "invalid value (value < 1)" ,
715- })
716- return
717- }
718- settingBytes , _ := json .Marshal (req .Value )
719- err := r .DaoWrapper .UsersDao .AddUserSetting (& model.UserSetting {UserID : u .ID , Type : model .CustomPlaybackSpeeds , Value : string (settingBytes )})
720- if err != nil {
721- _ = c .Error (tools.RequestError {
722- Status : http .StatusInternalServerError ,
723- CustomMessage : "can not add user setting" ,
724- Err : err ,
725- })
726- return
727- }
728- }
729-
730- func (r usersRoutes ) updateSeekingTime (c * gin.Context ) {
731- u := getUserFromContext (c )
732- request := getRequestFromContext (c )
733-
734- // Add the user's seeking time setting to the database.
735- err := r .UsersDao .AddUserSetting (& model.UserSetting {
736- UserID : u .ID ,
737- Type : model .SeekingTime ,
738- Value : request .Value ,
739- })
740- // Handle errors that may occur during the database operation.
741- if err != nil {
742- _ = c .Error (tools.RequestError {
743- Status : http .StatusInternalServerError ,
744- CustomMessage : "can not add user setting" ,
745- Err : err ,
746- })
747- return
748- }
749- }
750-
751- func (r usersRoutes ) updateAutoSkip (c * gin.Context ) {
752- u := c .MustGet ("TUMLiveContext" ).(tools.TUMLiveContext ).User
753- if u == nil {
754- _ = c .Error (tools.RequestError {
755- Status : http .StatusUnauthorized ,
756- CustomMessage : "login required for updating user settings" ,
757- })
758- return
759- }
760-
761- var req struct { Value model.AutoSkipSetting }
762- if err := c .BindJSON (& req ); err != nil {
763- _ = c .Error (tools.RequestError {
764- Status : http .StatusBadRequest ,
765- CustomMessage : "can not bind body to request" ,
766- Err : err ,
767- })
768- return
769- }
770-
771- settingBytes , _ := json .Marshal (req .Value )
772- err := r .DaoWrapper .UsersDao .AddUserSetting (& model.UserSetting {UserID : u .ID , Type : model .AutoSkip , Value : string (settingBytes )})
773- if err != nil {
774- _ = c .Error (tools.RequestError {
775- Status : http .StatusInternalServerError ,
776- CustomMessage : "can not add user setting" ,
777- Err : err ,
778- })
779- return
780- }
781- }
782-
783- func (r usersRoutes ) updatePreferredView (c * gin.Context ) {
784- u := getUserFromContext (c )
785- request := getRequestFromContext (c )
786-
787- err := r .UsersDao .AddUserSetting (& model.UserSetting {
788- UserID : u .ID ,
789- Type : model .LectureView ,
790- Value : request .Value ,
791- })
792- if err != nil {
793- _ = c .Error (tools.RequestError {
794- Status : http .StatusInternalServerError ,
795- CustomMessage : "can not add user setting" ,
796- Err : err ,
797- })
798- return
799- }
800- }
801-
802549func (r usersRoutes ) exportPersonalData (c * gin.Context ) {
803550 var resp personalData
804551 u := c .MustGet ("TUMLiveContext" ).(tools.TUMLiveContext ).User
@@ -865,46 +612,6 @@ func (r usersRoutes) exportPersonalData(c *gin.Context) {
865612 _ , _ = c .Writer .Write (marshal )
866613}
867614
868- func (r usersRoutes ) resetPassword (c * gin.Context ) {
869- type resetPasswordRequest struct {
870- Username string `json:"username"`
871- }
872- var req resetPasswordRequest
873- err := c .BindJSON (& req )
874- if err != nil {
875- _ = c .AbortWithError (http .StatusBadRequest , tools.RequestError {
876- Status : http .StatusBadRequest ,
877- CustomMessage : "Can't bind request body" ,
878- Err : err ,
879- })
880- return
881- }
882-
883- user , err := r .UsersDao .GetUserByEmail (c , req .Username )
884- if err != nil && errors .Is (err , gorm .ErrRecordNotFound ) {
885- // wrong username/email -> pass
886- return
887- }
888- if err != nil {
889- logger .Error ("can't get user for password reset" , "err" , err )
890- return
891- }
892- link , err := r .UsersDao .CreateRegisterLink (c , user )
893- if err != nil {
894- logger .Error ("can't create register link" , "err" , err )
895- return
896- }
897- err = r .EmailDao .Create (c , & model.Email {
898- From : tools .Cfg .Mail .Sender ,
899- To : user .Email .String ,
900- Subject : "TUM-Live: Reset Password" ,
901- Body : "Hi! \n \n You can reset your TUM-Live password by clicking on the following link: \n \n " + tools .Cfg .WebUrl + "/setPassword/" + link .RegisterSecret + "\n \n If you did not request a password reset, please ignore this email. \n \n Best regards" ,
902- })
903- if err != nil {
904- logger .Error ("can't save reset password email" , "err" , err )
905- }
906- }
907-
908615type personalData struct {
909616 UserData struct {
910617 Name string `json:"name,omitempty"`
0 commit comments