examples/rps: Add flag to set ACLs

Now that we can't use --v23.permissions.file for general purpose
permissions, we need another way to set ACLs.

Change-Id: I33c7741e75901a1344caaa5605a09b1add83db46
diff --git a/examples/rps/internal/auth.go b/examples/rps/internal/auth.go
new file mode 100644
index 0000000..a01b128
--- /dev/null
+++ b/examples/rps/internal/auth.go
@@ -0,0 +1,18 @@
+// Copyright 2015 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package internal
+
+import (
+	"v.io/v23/security"
+	"v.io/v23/security/access"
+)
+
+func NewAuthorizer(fname string) security.Authorizer {
+	a, err := access.PermissionsAuthorizerFromFile(fname, access.TypicalTagType())
+	if err != nil {
+		panic(err)
+	}
+	return a
+}
diff --git a/examples/rps/rpsbot/main.go b/examples/rps/rpsbot/main.go
index 492be26..120f109 100644
--- a/examples/rps/rpsbot/main.go
+++ b/examples/rps/rpsbot/main.go
@@ -19,7 +19,6 @@
 	"v.io/x/lib/vlog"
 	"v.io/x/ref/examples/rps"
 	"v.io/x/ref/examples/rps/internal"
-	"v.io/x/ref/lib/security/securityflag"
 	"v.io/x/ref/lib/signals"
 
 	_ "v.io/x/ref/profiles/roaming"
@@ -28,13 +27,14 @@
 var (
 	name     = flag.String("name", "", "identifier to publish itself as (defaults to user@hostname)")
 	numGames = flag.Int("num-games", -1, "number of games to play (-1 means unlimited)")
+	aclFile  = flag.String("acl-file", "", "file containing the JSON-encoded ACL")
 )
 
 func main() {
 	ctx, shutdown := v23.Init()
 	defer shutdown()
 
-	auth := securityflag.NewAuthorizerOrDie()
+	auth := internal.NewAuthorizer(*aclFile)
 	server, err := v23.NewServer(ctx)
 	if err != nil {
 		vlog.Fatalf("NewServer failed: %v", err)
diff --git a/examples/rps/rpsplayer/main.go b/examples/rps/rpsplayer/main.go
index 9f84800..5b50c17 100644
--- a/examples/rps/rpsplayer/main.go
+++ b/examples/rps/rpsplayer/main.go
@@ -24,13 +24,13 @@
 	"v.io/x/lib/vlog"
 	"v.io/x/ref/examples/rps"
 	"v.io/x/ref/examples/rps/internal"
-	"v.io/x/ref/lib/security/securityflag"
 
 	_ "v.io/x/ref/profiles/roaming"
 )
 
 var (
-	name = flag.String("name", "", "identifier to publish itself as (defaults to user@hostname)")
+	name    = flag.String("name", "", "identifier to publish itself as (defaults to user@hostname)")
+	aclFile = flag.String("acl-file", "", "file containing the JSON-encoded ACL")
 )
 
 func main() {
@@ -122,7 +122,7 @@
 	if *name == "" {
 		*name = internal.CreateName()
 	}
-	if err := server.Serve(fmt.Sprintf("rps/player/%s", *name), rps.PlayerServer(&impl{ch: ch}), securityflag.NewAuthorizerOrDie()); err != nil {
+	if err := server.Serve(fmt.Sprintf("rps/player/%s", *name), rps.PlayerServer(&impl{ch: ch}), internal.NewAuthorizer(*aclFile)); err != nil {
 		vlog.Fatalf("Serve failed: %v", err)
 	}
 	vlog.Infof("Listening on endpoint /%s", ep)
diff --git a/examples/rps/rpsscorekeeper/main.go b/examples/rps/rpsscorekeeper/main.go
index a5611e5..973609d 100644
--- a/examples/rps/rpsscorekeeper/main.go
+++ b/examples/rps/rpsscorekeeper/main.go
@@ -8,6 +8,7 @@
 package main
 
 import (
+	"flag"
 	"fmt"
 	"os"
 
@@ -17,11 +18,14 @@
 	"v.io/x/lib/vlog"
 	"v.io/x/ref/examples/rps"
 	"v.io/x/ref/examples/rps/internal"
-	"v.io/x/ref/lib/security/securityflag"
 
 	_ "v.io/x/ref/profiles/roaming"
 )
 
+var (
+	aclFile = flag.String("acl-file", "", "file containing the JSON-encoded ACL")
+)
+
 type impl struct {
 	ch chan rps.ScoreCard
 }
@@ -55,7 +59,7 @@
 	if err != nil {
 		vlog.Fatalf("os.Hostname failed: %v", err)
 	}
-	if err := server.Serve(fmt.Sprintf("rps/scorekeeper/%s", hostname), rps.ScoreKeeperServer(rpsService), securityflag.NewAuthorizerOrDie()); err != nil {
+	if err := server.Serve(fmt.Sprintf("rps/scorekeeper/%s", hostname), rps.ScoreKeeperServer(rpsService), internal.NewAuthorizer(*aclFile)); err != nil {
 		vlog.Fatalf("Serve failed: %v", err)
 	}
 	vlog.Infof("Listening on endpoint /%s", ep)