user.go 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. package v1
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/IceWhaleTech/CasaOS/model"
  6. "github.com/IceWhaleTech/CasaOS/pkg/config"
  7. jwt2 "github.com/IceWhaleTech/CasaOS/pkg/utils/jwt"
  8. oasis_err2 "github.com/IceWhaleTech/CasaOS/pkg/utils/oasis_err"
  9. "github.com/IceWhaleTech/CasaOS/service"
  10. "github.com/IceWhaleTech/CasaOS/types"
  11. "github.com/gin-gonic/gin"
  12. )
  13. var user_service service.UserService
  14. func init() {
  15. user_service = service.NewUserService()
  16. }
  17. // @Summary 设置用户名和密码
  18. // @Produce application/json
  19. // @Accept multipart/form-data
  20. // @Tags user
  21. // @Param username formData string true "User name"
  22. // @Param pwd formData string true "password"
  23. // @Security ApiKeyAuth
  24. // @Success 200 {string} string "ok"
  25. // @Router /user/setusernamepwd [post]
  26. func Set_Name_Pwd(c *gin.Context) {
  27. //json := make(map[string]string)
  28. //c.BindJSON(&json)
  29. username := c.PostForm("username")
  30. pwd := c.PostForm("pwd")
  31. //老用户名是否存在即新用户名和密码的验证
  32. if config.UserInfo.Initialized || len(username) == 0 || len(pwd) == 0 {
  33. c.JSON(http.StatusOK,
  34. model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS)})
  35. return
  36. }
  37. //开始设置
  38. err := user_service.SetUser(username, pwd, "", "", "", "")
  39. if err != nil {
  40. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: fmt.Sprintf("%v", err)})
  41. return
  42. } else {
  43. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)})
  44. return
  45. }
  46. }
  47. // @Summary 登录
  48. // @Produce application/json
  49. // @Accept multipart/form-data
  50. // @Tags user
  51. // @Param username formData string true "User name"
  52. // @Param pwd formData string true "password"
  53. // @Success 200 {string} string "ok"
  54. // @Router /user/login [post]
  55. func Login(c *gin.Context) {
  56. username := c.PostForm("username")
  57. pwd := c.PostForm("pwd")
  58. //检查参数是否正确
  59. if len(username) == 0 || len(pwd) == 0 {
  60. c.JSON(http.StatusOK,
  61. model.Result{
  62. Success: oasis_err2.ERROR,
  63. Message: oasis_err2.GetMsg(oasis_err2.INVALID_PARAMS),
  64. })
  65. return
  66. }
  67. if config.UserInfo.UserName == username && config.UserInfo.PWD == pwd {
  68. //if username == "admin" && pwd == "admin" {
  69. data := make(map[string]string, 2)
  70. data["token"] = jwt2.GetToken(username, pwd)
  71. data["version"] = types.CURRENTVERSION
  72. //user_service.SetUser("", "", token, "", "")
  73. c.JSON(http.StatusOK,
  74. model.Result{
  75. Success: oasis_err2.SUCCESS,
  76. Message: oasis_err2.GetMsg(oasis_err2.SUCCESS),
  77. Data: data,
  78. })
  79. return
  80. }
  81. c.JSON(http.StatusOK,
  82. model.Result{
  83. Success: oasis_err2.ERROR,
  84. Message: oasis_err2.GetMsg(oasis_err2.ERROR),
  85. })
  86. }
  87. // @Summary 修改头像
  88. // @Produce application/json
  89. // @Accept multipart/form-data
  90. // @Tags user
  91. // @Param file formData file true "用户头像"
  92. // @Security ApiKeyAuth
  93. // @Success 200 {string} string "ok"
  94. // @Router /user/changhead [post]
  95. func PostUserHead(c *gin.Context) {
  96. file, _, _ := c.Request.FormFile("file")
  97. user_service.UpLoadFile(file, config.UserInfo.Head)
  98. c.JSON(http.StatusOK,
  99. model.Result{
  100. Success: oasis_err2.SUCCESS,
  101. Message: oasis_err2.GetMsg(oasis_err2.SUCCESS),
  102. Data: config.UserInfo.Head,
  103. })
  104. }
  105. // @Summary 修改用户名
  106. // @Produce application/json
  107. // @Accept multipart/form-data
  108. // @Tags user
  109. // @Param username formData string true "User name"
  110. // @Param oldname formData string true "Old user name"
  111. // @Security ApiKeyAuth
  112. // @Success 200 {string} string "ok"
  113. // @Router /user/changusername [put]
  114. func PutUserName(c *gin.Context) {
  115. if config.ServerInfo.LockAccount {
  116. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ACCOUNT_LOCK, Message: oasis_err2.GetMsg(oasis_err2.ACCOUNT_LOCK)})
  117. return
  118. }
  119. oldname := c.PostForm("oldname")
  120. username := c.PostForm("username")
  121. if len(username) == 0 || config.UserInfo.UserName != oldname {
  122. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ERROR, Message: oasis_err2.GetMsg(oasis_err2.ERROR)})
  123. return
  124. }
  125. user_service.SetUser(username, "", "", "", "", "")
  126. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)})
  127. }
  128. // @Summary 修改密码
  129. // @Produce application/json
  130. // @Accept multipart/form-data
  131. // @Tags user
  132. // @Param pwd formData string true "Password"
  133. // @Param oldpwd formData string true "Old password"
  134. // @Security ApiKeyAuth
  135. // @Success 200 {string} string "ok"
  136. // @Router /user/changuserpwd [put]
  137. func PutUserPwd(c *gin.Context) {
  138. oldpwd := c.PostForm("oldpwd")
  139. pwd := c.PostForm("pwd")
  140. if config.UserInfo.PWD != oldpwd {
  141. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.PWD_INVALID_OLD, Message: oasis_err2.GetMsg(oasis_err2.PWD_INVALID_OLD)})
  142. return
  143. }
  144. if config.ServerInfo.LockAccount {
  145. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.ACCOUNT_LOCK, Message: oasis_err2.GetMsg(oasis_err2.ACCOUNT_LOCK)})
  146. return
  147. }
  148. if len(pwd) == 0 {
  149. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.PWD_IS_EMPTY, Message: oasis_err2.GetMsg(oasis_err2.PWD_IS_EMPTY)})
  150. return
  151. }
  152. user_service.SetUser("", pwd, "", "", "", "")
  153. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS)})
  154. }
  155. // @Summary edit user info
  156. // @Produce application/json
  157. // @Accept multipart/form-data
  158. // @Tags user
  159. // @Param user_name formData string false "User Name"
  160. // @Param email formData string false "Email"
  161. // @Param description formData string false "Description"
  162. // @Param pwd formData string false "Password"
  163. // @Param old_pwd formData string false "Old password"
  164. // @Param nick_name formData string false "nick name"
  165. // @Security ApiKeyAuth
  166. // @Success 200 {string} string "ok"
  167. // @Router /user/info [post]
  168. func PostUserChangeInfo(c *gin.Context) {
  169. username := c.PostForm("user_name")
  170. email := c.PostForm("email")
  171. description := c.PostForm("description")
  172. nickName := c.PostForm("nick_name")
  173. oldpwd := c.PostForm("old_pwd")
  174. pwd := c.PostForm("pwd")
  175. if len(pwd) > 0 && config.UserInfo.PWD != oldpwd {
  176. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.PWD_INVALID, Message: oasis_err2.GetMsg(oasis_err2.PWD_INVALID)})
  177. return
  178. }
  179. user_service.SetUser(username, pwd, "", email, description, nickName)
  180. data := make(map[string]string, 4)
  181. data["token"] = jwt2.GetToken(username, pwd)
  182. data["user_name"] = username
  183. data["head"] = config.UserInfo.Head
  184. data["nick_name"] = config.UserInfo.NickName
  185. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: data})
  186. }
  187. // @Summary edit user info
  188. // @Produce application/json
  189. // @Accept multipart/form-data
  190. // @Tags user
  191. // @Param nick_name formData string false "nick name"
  192. // @Security ApiKeyAuth
  193. // @Success 200 {string} string "ok"
  194. // @Router /user/nick [put]
  195. func PutUserChangeNick(c *gin.Context) {
  196. nickName := c.PostForm("nick_name")
  197. if len(nickName) > 0 {
  198. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.PWD_INVALID, Message: oasis_err2.GetMsg(oasis_err2.PWD_INVALID)})
  199. return
  200. }
  201. user_service.SetUser("", "", "", "", "", nickName)
  202. data := make(map[string]string, 1)
  203. data["nick_name"] = config.UserInfo.NickName
  204. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: data})
  205. }
  206. // @Summary edit user info
  207. // @Produce application/json
  208. // @Accept multipart/form-data
  209. // @Tags user
  210. // @Param description formData string false "Description"
  211. // @Security ApiKeyAuth
  212. // @Success 200 {string} string "ok"
  213. // @Router /user/desc [put]
  214. func PutUserChangeDesc(c *gin.Context) {
  215. desc := c.PostForm("description")
  216. if len(desc) > 0 {
  217. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.PWD_INVALID, Message: oasis_err2.GetMsg(oasis_err2.PWD_INVALID)})
  218. return
  219. }
  220. user_service.SetUser("", "", "", "", desc, "")
  221. data := make(map[string]string, 1)
  222. data["description"] = config.UserInfo.Description
  223. c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: data})
  224. }
  225. // @Summary get user info
  226. // @Produce application/json
  227. // @Accept mapplication/json
  228. // @Tags user
  229. // @Success 200 {string} string "ok"
  230. // @Router /user/info [get]
  231. func GetUserInfo(c *gin.Context) {
  232. var u = make(map[string]string, 5)
  233. u["user_name"] = config.UserInfo.UserName
  234. u["head"] = config.UserInfo.Head
  235. u["email"] = config.UserInfo.Email
  236. u["description"] = config.UserInfo.Description
  237. u["nick_name"] = config.UserInfo.NickName
  238. c.JSON(http.StatusOK,
  239. model.Result{
  240. Success: oasis_err2.SUCCESS,
  241. Message: oasis_err2.GetMsg(oasis_err2.SUCCESS),
  242. Data: u,
  243. })
  244. }