void New() { var name = Form.Find("app_name"); var domain = Form.Find("app_domain"); var icon = Form.Find("icon"); var app = RowAdapter.Create <App>(); app.OwnerID = _account.ID; app.Name = name; app.Domain = domain; app.IconURL = icon; app.Save(); var json = new JsonObject(); json["ID"] = app.ID; WrapResult(true, json); }
public void Build() { var count = Form.Find <int>("count"); if (count <= 0) { WrapResult(ResultCode.InvalidParam, "参数错误!"); return; } var result = new List <Invite>(); for (int i = 0; i < count; i++) { var invite = RowAdapter.Create <Invite>(); result.Add(invite); invite.Save(); } WrapResult(ResultCode.OK, result); }
void Login() { string token, name; long appID, timestamp; if (!Form.TryGet("token", out token) || !Form.TryGet("account", out name) || !Form.TryGet("app_id", out appID) || !Form.TryGet("timestamp", out timestamp)) { WrapResult(ResultCode.InvalidParam, "invalid param!"); return; } if (string.IsNullOrEmpty(name)) { WrapResult(ResultCode.InvalidParam, "账号不能为空!"); return; } if (string.IsNullOrEmpty(token)) { WrapResult(ResultCode.InvalidParam, "Token 不能为空!"); return; } var time = DateTimeExtension.ConvertFromTimestamp(timestamp); if (Math.Abs((DateTime.Now - time).TotalSeconds) > Interval.TotalSeconds) { WrapResult(ResultCode.InvalidParam, "Token 已过期!"); return; } var app = RowAdapter.LoadFirstOrDefault <App>(p => p.ID == appID && p.Deleted == false); if (app == null) { WrapResult(ResultCode.InvalidParam, "指定应用未找到!"); return; } if (!app.AccessRestriction.Security(Request.RemoteEndPoint.Address)) { WrapResult(ResultCode.InvalidParam, "限制访问!"); return; } var account = RowAdapter.LoadFirstOrDefault <Account>(p => p.Name == name); if (account == null) { WrapResult(ResultCode.InvalidParam, "指定帐号不存在!"); return; } if (!account.Available) { WrapResult(ResultCode.InvalidAction, "该帐号不可用!"); return; } account.CheckErrorReset(); if (account.TodayErrorTimes >= MaxErrorTimes) { WrapResult(ResultCode.InvalidAction, "您的账号已被限制登录!"); return; } var credentials = new Framework.Security.ServerCredentials(account.Password); var authorization = new Framework.Security.Authorization(name, timestamp, token); if (!credentials.Authenticate(authorization)) { account.TodayErrorTimes++; account.TotalErrorTimes++; account.Save(); WrapResult(ResultCode.InvalidAction, "无效的Token!"); return; } if (string.IsNullOrEmpty(account.Realname)) { WrapResult((byte)ResultError.Incompletion, "帐号信息不完善,请先完善帐号信息!"); return; } var auth = RowAdapter.LoadFirstOrDefault <Authorization>(p => p.OwnerID == account.ID && p.AppID == app.ID); if (auth == null) { auth = RowAdapter.Create <Authorization>(); auth.OwnerID = account.ID; auth.AppID = appID; } else { auth.Reset(); } if (account.TodayErrorTimes > 0) { account.ResetError(); account.Save(); } auth.Save(); var json = new JsonObject(); json["auth_token"] = auth.Token; json["expires_in"] = (auth.DeathLine - DateTime.Now).TotalSeconds; WrapResult(ResultCode.OK, json); }
void Authorization() { var appID = Form.Find <long>("app_id"); var appKey = Form.Find("app_key"); var authToken = Form.Find("auth_token"); var app = RowAdapter.LoadFirstOrDefault <App>(p => p.ID == appID && p.Deleted == false); if (app == null) { WrapResult(false, "not found app!"); return; } if (!app.AccessRestriction.Security(Request.RemoteEndPoint.Address)) { WrapResult(ResultCode.InvalidParam, "restricted access!"); return; } if (!app.Key.Equals(appKey)) { WrapResult(false, "invaild app key!"); return; } var auth = RowAdapter.LoadFirstOrDefault <Authorization>(p => p.AppID == appID && p.Token == authToken); logger.Info("ID:{0} Key:{1} Token:{2}", appID, appKey, authToken); if (auth == null) { WrapResult(false, "invaild code!"); return; } if (!auth.Available) { WrapResult(false, "code expire!"); return; } var access = RowAdapter.LoadFirstOrDefault <Access>(p => p.AppID == appID && p.OwnerID == auth.OwnerID); if (access == null) { access = RowAdapter.Create <Access>(); access.OwnerID = auth.OwnerID; access.AppID = appID; } access.Reset(); access.Save(); if (!access.Available) { WrapResult(false, "invaild access!"); return; } var json = new JsonObject(); json["access_token"] = access.AccessToken; json["refresh_token"] = access.RefreshToken; json["expires_in"] = (access.DeathLine - DateTime.Now).TotalSeconds; WrapResult(true, json); }
void Token() { var appID = Form.Find <long>("app_id"); var name = Form.Find("account"); var timestamp = Form.Find <long>("timestamp"); var token = Form.Find("token"); if (string.IsNullOrEmpty(name)) { WrapResult(false, "账号不能为空!"); return; } if (string.IsNullOrEmpty(token)) { WrapResult(false, "Token 不能为空!"); return; } var time = DateTimeExtension.ConvertFromTimestamp(timestamp); if (Math.Abs((DateTime.Now - time).TotalSeconds) > Interval.TotalSeconds) { WrapResult(false, "Token 已过期!"); return; } var app = RowAdapter.LoadFirstOrDefault <App>(p => p.ID == appID && p.Deleted == false); if (app == null) { WrapResult(false, "not found app!"); return; } if (!app.AccessRestriction.Security(Request.RemoteEndPoint.Address)) { WrapResult(ResultCode.InvalidParam, "限制访问!"); return; } var account = RowAdapter.LoadFirstOrDefault <Account>(p => p.Name == name); if (account == null) { WrapResult(false, "指定帐号不存在!"); return; } if (!account.Available) { WrapResult(false, "该帐号不可用!"); return; } account.CheckErrorReset(); if (account.TodayErrorTimes >= MaxErrorTimes) { WrapResult(false, "您的账号已被限制登录!"); return; } var credentials = new Framework.Security.ServerCredentials(account.Password); var authorization = new Framework.Security.Authorization(name, timestamp, token); if (!credentials.Authenticate(authorization)) { account.TodayErrorTimes++; account.TotalErrorTimes++; account.Save(); WrapResult(false, "无效的Token!"); return; } if (account.TodayErrorTimes > 0) { account.ResetError(); account.Save(); } var access = RowAdapter.LoadFirstOrDefault <Access>(p => p.AppID == appID && p.OwnerID == account.ID); if (access == null) { access = RowAdapter.Create <Access>(); access.OwnerID = account.ID; access.AppID = appID; } access.Reset(); access.Save(); var json = new JsonObject(); json["access_token"] = access.AccessToken; json["expires_in"] = (access.DeathLine - DateTime.Now).TotalSeconds; WrapResult(true, json); }
void New() { var name = Form.Find("user_name"); var password = Form.Find("user_pwd"); var nickname = Form.Find("nick_name"); var realname = Form.Find("realname"); var birth = Form.Find("birth"); var gender = Form.Find <int>("gender"); var phone = Form.Find("phone"); var inviteCode = Form.Find("invite_code"); if (string.IsNullOrEmpty(name)) { WrapResult(false, "账号不能为空!"); return; } if (name.Length > 50) { WrapResult(false, "账号长度不合法!"); return; } if (string.IsNullOrEmpty(password)) { WrapResult(false, "密码不能为空!"); return; } var gbkEncoding = System.Text.Encoding.GetEncoding("GBK"); if (gbkEncoding.GetByteCount(password) > 200) { WrapResult(false, "密码长度不合法!"); return; } if (string.IsNullOrEmpty(nickname)) { WrapResult(false, "昵称不能为空!"); return; } if (nickname.Length > 50) { WrapResult(false, "昵称长度不合法!"); return; } if (string.IsNullOrEmpty(realname)) { WrapResult(false, "实名不能为空!"); return; } if (realname.Length > 5) { WrapResult(false, "实名长度不合法!"); return; } if (string.IsNullOrEmpty(inviteCode)) { WrapResult(false, "邀请码不能为空!"); return; } if (inviteCode.Length != 32) { WrapResult(false, "非法邀请码!"); return; } var invites = RowAdapter.Load <Invite>(p => p.Code == inviteCode); if (invites.Count == 0) { WrapResult(false, "指定邀请码不存在!"); return; } var invite = invites.First(); if (!invite.Available) { WrapResult(false, "无效的邀请码!"); return; } var accounts = RowAdapter.Load <Account>(p => p.Name == name); if (accounts.Count > 0) { WrapResult(false, "指定帐号已存在!"); return; } invite.Available = false; invite.UseTime = DateTime.Now; invite.Account = name; invite.Save(); var account = RowAdapter.Create <Account>(); account.Name = name; account.Password = password; account.Nickname = nickname; account.Realname = realname; account.Birth = DateTime.Parse(birth); account.Gender = (Gender)gender; account.Phone = phone; account.Save(); WrapResult(true, "ok"); }