以下が実装例です。なお、セキュリティ脆弱性の問題等を考慮して、ログイン認証機能や動画ファイルの保存場所・管理方法・再生方法などは実装せず、あくまで要望に沿った実装例を示します。
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>限定公開動画サイト</title>
</head>
<body>
<h1>限定公開動画サイト</h1>
<h2>ログイン</h2>
<form name="loginForm" onsubmit="return authenticate()">
<label for="userId">ユーザーID:</label>
<input type="text" name="userId" required><br>
<label for="password">パスワード:</label>
<input type="password" name="password" required><br>
<input type="submit" value="ログイン">
</form>
<h2>動画一覧</h2>
<table>
<thead>
<tr>
<th>ID</th>
<th>タイトル</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td><a href="#" onclick="playVideo(1); return false;">動画タイトル1</a></td>
</tr>
<tr>
<td>2</td>
<td><a href="#" onclick="playVideo(2); return false;">動画タイトル2</a></td>
</tr>
<tr>
<td>3</td>
<td><a href="#" onclick="playVideo(3); return false;">動画タイトル3</a></td>
</tr>
</tbody>
</table>
<script>
const users = [
{ id: 'user1', password: 'pass1' },
{ id: 'user2', password: 'pass2' },
{ id: 'user3', password: 'pass3' }
];
function authenticate() {
const userId = document.loginForm.userId.value;
const password = document.loginForm.password.value;
const user = users.find(u => u.id === userId && u.password === password);
if (user) {
alert('ログインに成功しました!');
return true;
} else {
alert('ユーザーIDまたはパスワードが違います!');
return false;
}
}
function playVideo(videoId) {
alert(`動画${videoId}を再生します!`);
// ここに動画再生のための処理を書く
}
</script>
</body>
</html>
```
なお、最後の `playVideo()` 関数には、JavaScriptによる動画再生の方法がありません。動画再生の方法については別途調査が必要です。