Add new REST endpoint:
- /v2/token/password?username={user}
TSHOCKPLUGINS-1 #resolve #time 5m #comment Deprecating old token create syntax, new endpoint added as a replacement.
This commit is contained in:
parent
e1d11ca96a
commit
5d61a56fcd
2 changed files with 34 additions and 2 deletions
|
|
@ -116,8 +116,8 @@ namespace Rests
|
||||||
if (obj == null)
|
if (obj == null)
|
||||||
throw new NullReferenceException("obj");
|
throw new NullReferenceException("obj");
|
||||||
|
|
||||||
//if (OnRestRequestCall(e))
|
if (OnRestRequestCall(e))
|
||||||
// return;
|
return;
|
||||||
|
|
||||||
var str = JsonConvert.SerializeObject(obj, Formatting.Indented);
|
var str = JsonConvert.SerializeObject(obj, Formatting.Indented);
|
||||||
e.Response.Connection.Type = ConnectionType.Close;
|
e.Response.Connection.Type = ConnectionType.Close;
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ namespace Rests
|
||||||
{
|
{
|
||||||
Tokens = new Dictionary<string, object>();
|
Tokens = new Dictionary<string, object>();
|
||||||
Register(new RestCommand("/token/create/{username}/{password}", NewToken) {RequiresToken = false});
|
Register(new RestCommand("/token/create/{username}/{password}", NewToken) {RequiresToken = false});
|
||||||
|
Register(new RestCommand("/v2/token/create/{password}", NewTokenV2) { RequiresToken = false });
|
||||||
Register(new RestCommand("/token/destroy/{token}", DestroyToken) {RequiresToken = true});
|
Register(new RestCommand("/token/destroy/{token}", DestroyToken) {RequiresToken = true});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -60,6 +61,36 @@ namespace Rests
|
||||||
{{"status", "200"}, {"response", "Requested token was successfully destroyed."}};
|
{{"status", "200"}, {"response", "Requested token was successfully destroyed."}};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private object NewTokenV2(RestVerbs verbs, IParameterCollection parameters)
|
||||||
|
{
|
||||||
|
var user = parameters["username"];
|
||||||
|
var pass = verbs["password"];
|
||||||
|
|
||||||
|
RestObject obj = null;
|
||||||
|
if (Verify != null)
|
||||||
|
obj = Verify(user, pass);
|
||||||
|
|
||||||
|
if (obj == null)
|
||||||
|
obj = new RestObject("401") { Error = "Invalid username/password combination provided. Please re-submit your query with a correct pair." };
|
||||||
|
|
||||||
|
if (obj.Error != null)
|
||||||
|
return obj;
|
||||||
|
|
||||||
|
string hash;
|
||||||
|
var rand = new Random();
|
||||||
|
var randbytes = new byte[32];
|
||||||
|
do
|
||||||
|
{
|
||||||
|
rand.NextBytes(randbytes);
|
||||||
|
hash = randbytes.Aggregate("", (s, b) => s + b.ToString("X2"));
|
||||||
|
} while (Tokens.ContainsKey(hash));
|
||||||
|
|
||||||
|
Tokens.Add(hash, user);
|
||||||
|
|
||||||
|
obj["token"] = hash;
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
private object NewToken(RestVerbs verbs, IParameterCollection parameters)
|
private object NewToken(RestVerbs verbs, IParameterCollection parameters)
|
||||||
{
|
{
|
||||||
var user = verbs["username"];
|
var user = verbs["username"];
|
||||||
|
|
@ -88,6 +119,7 @@ namespace Rests
|
||||||
Tokens.Add(hash, user);
|
Tokens.Add(hash, user);
|
||||||
|
|
||||||
obj["token"] = hash;
|
obj["token"] = hash;
|
||||||
|
obj["deprecated"] = "This method will be removed from TShock in 3.6.";
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue