Video hosting with local control
I see 2 things you are trying to achieve here:

video is private, but becomes public. at api.video, we have the concept of private videos - where users must have a one time token to watch.  Anyone else using that token will be unable to watch the video.  Once you reach your view threshold, you can make the video public - removing this token behavior.

Monitoring the views of each user.  We have a concept of dynamic metadata - where you can attach session information to each view.  You could track each user's viewing in this way. For example, if you wanted to tag a view as watched by Bob:
https://embed.api.video/vod/vi2ZEgTAhfOEeYN7ZnEGsm3i?metadata[user]=bob


When you load the page of videos - you can query the video analytics for sessions for user=bob.  Each session will list the videoId, and the start/end time of the session.  Your app logic can decide if enough of the video was watched to unlock the next video.