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 return movie, nil
} }
func (u *User) MovieList() []*pb.MovieInfo { func (u *User) Movies() []*pb.MovieInfo {
u.room.movies.lock.RLock() u.room.movies.lock.RLock()
defer u.room.movies.lock.RUnlock() defer u.room.movies.lock.RUnlock()
@ -214,6 +214,27 @@ func (u *User) MovieList() []*pb.MovieInfo {
return movies 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) { func (u *User) RegClient(conn *websocket.Conn) (*Client, error) {
return u.room.RegClient(u, conn) return u.room.RegClient(u, conn)
} }

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

Loading…
Cancel
Save