Files

129 lines
3.4 KiB
Go
Raw Permalink Normal View History

2022-08-04 19:14:53 -04:00
/*
* @Author: LinkLeong link@icewhale.com
* @Date: 2022-03-18 11:40:55
* @LastEditors: LinkLeong
* @LastEditTime: 2022-07-12 10:05:37
* @Description:
* @Website: https://www.casaos.io
* Copyright (c) 2022 by icewhale, All Rights Reserved.
*/
package service
import (
2023-04-22 00:46:18 -04:00
"crypto/ecdsa"
2022-08-04 19:14:53 -04:00
"io"
"mime/multipart"
"os"
2023-04-22 00:46:18 -04:00
"github.com/IceWhaleTech/CasaOS-Common/utils/jwt"
"github.com/IceWhaleTech/CasaOS-Common/utils/logger"
2022-08-04 19:14:53 -04:00
"github.com/IceWhaleTech/CasaOS-UserService/service/model"
2023-04-22 00:46:18 -04:00
"go.uber.org/zap"
2022-08-04 19:14:53 -04:00
"gorm.io/gorm"
)
type UserService interface {
UpLoadFile(file multipart.File, name string) error
CreateUser(m model.UserDBModel) model.UserDBModel
GetUserCount() (userCount int64)
UpdateUser(m model.UserDBModel)
UpdateUserPassword(m model.UserDBModel)
GetUserInfoById(id string) (m model.UserDBModel)
GetUserAllInfoById(id string) (m model.UserDBModel)
GetUserAllInfoByName(userName string) (m model.UserDBModel)
DeleteUserById(id string)
DeleteAllUser()
GetUserInfoByUserName(userName string) (m model.UserDBModel)
GetAllUserName() (list []model.UserDBModel)
2023-04-22 00:46:18 -04:00
GetKeyPair() (*ecdsa.PrivateKey, *ecdsa.PublicKey)
2022-08-04 19:14:53 -04:00
}
var UserRegisterHash = make(map[string]string)
type userService struct {
2023-04-22 00:46:18 -04:00
privateKey *ecdsa.PrivateKey // keep this private - NEVER expose it!!!
publicKey *ecdsa.PublicKey
2022-08-04 19:14:53 -04:00
db *gorm.DB
}
func (u *userService) DeleteAllUser() {
u.db.Where("1=1").Delete(&model.UserDBModel{})
}
2023-04-22 00:46:18 -04:00
2022-08-04 19:14:53 -04:00
func (u *userService) DeleteUserById(id string) {
u.db.Where("id= ?", id).Delete(&model.UserDBModel{})
}
func (u *userService) GetAllUserName() (list []model.UserDBModel) {
u.db.Select("username").Find(&list)
return
}
2023-04-22 00:46:18 -04:00
2022-08-04 19:14:53 -04:00
func (u *userService) CreateUser(m model.UserDBModel) model.UserDBModel {
u.db.Create(&m)
return m
}
func (u *userService) GetUserCount() (userCount int64) {
u.db.Find(&model.UserDBModel{}).Count(&userCount)
return
}
func (u *userService) UpdateUser(m model.UserDBModel) {
u.db.Model(&m).Omit("password").Updates(&m)
}
2023-04-22 00:46:18 -04:00
2022-08-04 19:14:53 -04:00
func (u *userService) UpdateUserPassword(m model.UserDBModel) {
u.db.Model(&m).Update("password", m.Password)
}
2023-04-22 00:46:18 -04:00
2022-08-04 19:14:53 -04:00
func (u *userService) GetUserAllInfoById(id string) (m model.UserDBModel) {
u.db.Where("id= ?", id).First(&m)
return
}
2023-04-22 00:46:18 -04:00
2022-08-04 19:14:53 -04:00
func (u *userService) GetUserAllInfoByName(userName string) (m model.UserDBModel) {
u.db.Where("username= ?", userName).First(&m)
return
}
2023-04-22 00:46:18 -04:00
2022-08-04 19:14:53 -04:00
func (u *userService) GetUserInfoById(id string) (m model.UserDBModel) {
u.db.Select("username", "id", "role", "nickname", "description", "avatar", "email").Where("id= ?", id).First(&m)
return
}
func (u *userService) GetUserInfoByUserName(userName string) (m model.UserDBModel) {
u.db.Select("username", "id", "role", "nickname", "description", "avatar", "email").Where("username= ?", userName).First(&m)
return
}
2023-04-22 00:46:18 -04:00
// 上传文件
2022-08-04 19:14:53 -04:00
func (c *userService) UpLoadFile(file multipart.File, url string) error {
2023-04-22 00:46:18 -04:00
out, _ := os.OpenFile(url, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0o644)
2022-08-04 19:14:53 -04:00
defer out.Close()
io.Copy(out, file)
return nil
}
2023-04-22 00:46:18 -04:00
func (u *userService) GetKeyPair() (*ecdsa.PrivateKey, *ecdsa.PublicKey) {
return u.privateKey, u.publicKey
}
// 获取用户Service
2022-08-04 19:14:53 -04:00
func NewUserService(db *gorm.DB) UserService {
2023-04-22 00:46:18 -04:00
// DO NOT store private key anywhere - keep it in memory ONLY!!!
privateKey, publicKey, err := jwt.GenerateKeyPair()
if err != nil {
logger.Error("failed to generate key pair for JWT", zap.Error(err))
return nil
}
return &userService{
privateKey: privateKey,
publicKey: publicKey,
db: db,
}
2022-08-04 19:14:53 -04:00
}