Feat: only movie creater can edit movie

pull/21/head
zijiren233 1 year ago
parent 3238a128b7
commit b7af32adfd

@ -186,7 +186,7 @@ func (u *User) Movie(id uint64) (*pb.MovieInfo, error) {
return movie, nil
}
func (u *User) MovieList() []*pb.MovieInfo {
func (u *User) Movies() []*pb.MovieInfo {
u.room.movies.lock.RLock()
defer u.room.movies.lock.RUnlock()
@ -214,6 +214,27 @@ func (u *User) MovieList() []*pb.MovieInfo {
return movies
}
func (u *User) EditMovie(id uint64, movie BaseMovieInfo) error {
m, err := u.room.movies.GetMovie(id)
if err != nil {
return err
}
if !u.IsAdmin() && !u.IsRoot() && m.Creator().name != u.name {
return errors.New("you are not the creator of this movie, you can't edit it")
}
pre := m.BaseMovieInfo
m.BaseMovieInfo = movie
switch {
case pre.RtmpSource && !movie.RtmpSource:
u.room.rtmpa.DelChannel(m.PullKey)
m.PullKey = ""
// TODO: live proxy
case pre.Proxy && !movie.Proxy:
m.PullKey = ""
}
return nil
}
func (u *User) RegClient(conn *websocket.Conn) (*Client, error) {
return u.room.RegClient(u, conn)
}

@ -52,7 +52,7 @@ func MovieList(ctx *gin.Context) {
return
}
ml := user.MovieList()
ml := user.Movies()
movies, err := GetPageItems(ctx, ml)
if err != nil {
@ -88,7 +88,7 @@ func Movies(ctx *gin.Context) {
return
}
ml := user.MovieList()
ml := user.Movies()
movies, err := GetPageItems(ctx, ml)
if err != nil {
@ -294,11 +294,8 @@ func NewPublishKey(ctx *gin.Context) {
}
type EditMovieReq struct {
Id uint64 `json:"id"`
Url string `json:"url"`
Name string `json:"name"`
Type string `json:"type"`
Headers map[string]string `json:"headers"`
Id uint64 `json:"id"`
room.BaseMovieInfo
}
func EditMovie(ctx *gin.Context) {
@ -315,19 +312,11 @@ func EditMovie(ctx *gin.Context) {
return
}
m, err := user.Room().GetMovie(req.Id)
if err != nil {
if err := user.EditMovie(req.Id, req.BaseMovieInfo); err != nil {
ctx.AbortWithStatusJSON(http.StatusBadRequest, NewApiErrorResp(err))
return
}
// Dont edit live and proxy
m.Url = req.Url
m.Name = req.Name
m.Type = req.Type
m.Headers = req.Headers
if err := user.Broadcast(&room.ElementMessage{
ElementMessage: &pb.ElementMessage{
Type: pb.ElementMessageType_CHANGE_MOVIES,

Loading…
Cancel
Save