Example #1
0
        /// <summary>
        /// 处理设备注册
        /// </summary>
        /// <param name="registerInfo"></param>
        /// <param name="con"></param>
        /// <param name="db"></param>
        public void ProcessReqest(Register registerInfo, SocketConnection con, IClientRequest db)
        {
            var registerBk = new CmdHeader
            {
                CmdCode  = 0xFF01,
                Identity = registerInfo.Identity,
                ServerId = SocketConnectionServerDispatcher.ServerId,
                //TimeToken = registerInfo.TimeToken
            };

            SocketConnection.ShowMsg(registerInfo.ToString());
            var registerDto = new DtoRegister
            {
                Iccid            = registerInfo.Iccid,
                ImeiNo           = registerInfo.Identity,
                ImeiType         = registerInfo.ImeiType,
                ImeiVersion      = registerInfo.ImeiVersion,
                RemoteIpEndPoint = con.ConnectSocket.RemoteEndPoint.ToString(),
                ServerIp         = con.ConnectSocket.LocalEndPoint.ToString(),
                ServerOutIp      = SocketConnectionServerDispatcher.ServerOutIpEndPort,
                Lng = registerInfo.Lng,
                Lat = registerInfo.Lat
            };

            registerBk.ResultCode = db.DeviceRegister(registerDto);
            con.Send(registerBk.ToByteArray());
            SocketConnection.ShowMsg(registerBk.ToString());
        }
        public async Task <object> Register([FromBody] DtoRegister model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var user = new IdentityUser
            {
                UserName = model.Email,
                Email    = model.Email
            };
            var result = await _userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                await _signInManager.SignInAsync(user, false);

                return(await GenerateJwtToken(model.Email, user));
            }
            if (result.Errors.Count() > 0)
            {
                IdentityError error = result.Errors.FirstOrDefault();
                return(StatusCode(StatusCodes.Status501NotImplemented, error.Description));
            }

            throw new ApplicationException("INVALID_REGISTER_ATTEMPT");
        }
Example #3
0
        public async Task <IActionResult> Register(DtoRegister formData)
        {
            if (await _repo.UserExists(formData.Phone, formData.Email))
            {
                return(BadRequest("此電話或電郵件已經是會員了"));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.ValidationState));
            }


            //寫入註冊資料到資料庫中
            var mapMember = _mapper.Map <Member>(formData);
            var member    = await _repo.Register(mapMember, formData.password);

            return(Ok());

            //返回簡單使用者資料
            // var user = _mapper.Map<DtoLoginToReturn>(member);
            // return Ok(user);

            //重新導向使用者資料編輯
            //return CreatedAtRoute("GetAccountr", new {controller = "account", id = userToReturn.USERID}, userToReturn);
        }
Example #4
0
        public async Task <IActionResult> Register(DtoRegister user)
        {
            var hashedUser = new User()
            {
                Username  = user.Username,
                Email     = user.Email,
                Password  = _iauth.Hashing(user.Password),
                FirstName = user.FirstName,
                LastName  = user.LastName,
                TeamId    = user.TeamId
            };

            //checking if username or email is unique
            var emailCheck = await _icheck.CheckEmail(hashedUser.Email);

            var usernameCheck = await _icheck.CheckUsername(hashedUser.Username);

            if (emailCheck && usernameCheck)
            {
                return(BadRequest("Email and Username is already taken"));
            }
            else if (emailCheck)
            {
                return(BadRequest("Email is already taken"));
            }
            else if (usernameCheck)
            {
                return(BadRequest("Username is already taken"));
            }

            await _context.User.AddAsync(hashedUser);

            await _context.SaveChangesAsync();

            return(Ok(hashedUser));
        }
        public async Task <HttpResponseMessage> Register(DtoRegister reg)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = reg.Name, Email = reg.Email
                };
                var result = await _userManager.CreateAsync(user, reg.Password);

                if (result.Succeeded)
                {
                    // Send an email with this link
                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: HttpContext.Request.Scheme);
                    await _emailSender.SendEmailAsync(reg.Email, "Confirm your account",
                                                      $"Please confirm your account by clicking this link: <a href='{callbackUrl}'>link</a>");

                    await _signInManager.SignInAsync(user, isPersistent : false);
                }
            }

            return(new HttpResponseMessage(HttpStatusCode.OK));
        }
Example #6
0
        public int DeviceRegister(DtoRegister registerDto)
        {
            if (string.IsNullOrWhiteSpace(registerDto.ImeiNo))
            {
                return(0);
            }
            string sqlStr = "select imeiId,imeimac,imeiGLongitude,imeiGLatitude from cy_imeiInfo where imeimac = @imeimac";
            var    param  = new SqlParameter("@imeimac", SqlDbType.VarChar, 18)
            {
                Value = registerDto.ImeiNo
            };
            var oDs = _dBhelper.ExecuteQuery(sqlStr, param);
            int res;

            if (oDs.Tables[0].Rows.Count == 0)
            {
                res = _dBhelper.ExecuteTransaction(cmd =>
                {
                    var sqlStr1    = "insert into cy_imeiInfo(imeimac,imeiType,imeiVersion,imeiStatusNo,ImeiOnlineState,imeiIp,imeiServerIp,imeiServerOutIp,imeiIccid,addUserId,addTime,updateUserId,updateTime";
                    var sqlStr2    = "(@imeimac,@imeiType,@imeiVersion,'A',@statusNo,@imeiIp,@imeiServerIp,@imeiServerOutIp,@imeiIccid,@addUserId,@addTime,@updateUserId,@updateTime";
                    var parameters = new List <SqlParameter>()
                    {
                        new SqlParameter("@imeimac", SqlDbType.VarChar, 18)
                        {
                            Value = registerDto.ImeiNo
                        },
                        new SqlParameter("@imeiType", SqlDbType.VarChar, 10)
                        {
                            Value = registerDto.ImeiType
                        },
                        new SqlParameter("@imeiVersion", SqlDbType.VarChar, 10)
                        {
                            Value = registerDto.ImeiVersion
                        },
                        new SqlParameter("@statusNo", SqlDbType.VarChar, 5)
                        {
                            Value = "On"
                        },
                        new SqlParameter("@imeiIp", SqlDbType.VarChar, 25)
                        {
                            Value = registerDto.RemoteIpEndPoint
                        },
                        new SqlParameter("@imeiServerIp", SqlDbType.VarChar, 25)
                        {
                            Value = registerDto.ServerIp
                        },
                        new SqlParameter("@imeiServerOutIp", SqlDbType.VarChar, 25)
                        {
                            Value = registerDto.ServerOutIp
                        },
                        new SqlParameter("@imeiIccid", SqlDbType.VarChar, 20)
                        {
                            Value = registerDto.Iccid
                        },
                        new SqlParameter("@addUserId", SqlDbType.Int, 4)
                        {
                            Value = -1
                        },
                        new SqlParameter("@addTime", SqlDbType.DateTime)
                        {
                            Value = DateTime.Now
                        },
                        new SqlParameter("@updateUserId", SqlDbType.Int, 4)
                        {
                            Value = -1
                        },
                        new SqlParameter("@updateTime", SqlDbType.DateTime)
                        {
                            Value = DateTime.Now
                        }
                    };
                    if (registerDto.Lng.HasValue && registerDto.Lng != 0D && registerDto.Lat.HasValue && registerDto.Lat != 0D)
                    {
                        var qryres   = CommonCode.GetWebRequest($"http://api.map.baidu.com/geocoder/v2/?location={registerDto.Lat.ToString()},{registerDto.Lng.ToString()}&output=json&ak=WEc8RlPXzSifaq9RHxE1WW7lRKgbid6Y");
                        var location = JsonConvert.DeserializeObject <QryLocation>(qryres);
                        if (location != null && location.status == 0)
                        {
                            sqlStr1 += ",imeiGLongitude,imeiGLatitude,imeiAddress,imeiProvince,imeiCity,imeiCountry";
                            sqlStr2 += ",@imeiGLongitude,@imeiGLatitude,@imeiAddress,@imeiProvince,@imeiCity,@imeiCountry";
                            parameters.Add(new SqlParameter("@imeiGLongitude", SqlDbType.Decimal)
                            {
                                Value = registerDto.Lng
                            });
                            parameters.Add(new SqlParameter("@imeiGLatitude", SqlDbType.Decimal)
                            {
                                Value = registerDto.Lat
                            });
                            parameters.Add(new SqlParameter("@imeiAddress", SqlDbType.NVarChar, 100)
                            {
                                Value = location.result.formatted_address
                            });
                            parameters.Add(new SqlParameter("@imeiProvince", SqlDbType.NVarChar, 20)
                            {
                                Value = location.result.addressComponent.province
                            });
                            parameters.Add(new SqlParameter("@imeiCity", SqlDbType.NVarChar, 20)
                            {
                                Value = location.result.addressComponent.city
                            });
                            parameters.Add(new SqlParameter("@imeiCountry", SqlDbType.NVarChar, 20)
                            {
                                Value = location.result.addressComponent.country
                            });
                            qryres      = CommonCode.GetWebRequest($"http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x={registerDto.Lng}&y={registerDto.Lat}");
                            var baiduxy = JsonConvert.DeserializeObject <BaiDuXy>(qryres);
                            if (baiduxy != null && baiduxy.error == 0 && !string.IsNullOrWhiteSpace(baiduxy.x) && !string.IsNullOrWhiteSpace(baiduxy.y))
                            {
                                sqlStr1 += ",imeiLongitude,imeiLatitude";
                                sqlStr2 += ",@imeiLongitude,@imeiLatitude";
                                parameters.Add(new SqlParameter("@imeiLongitude", SqlDbType.Decimal)
                                {
                                    Value = Convert.ToDecimal(Encoding.UTF8.GetString(Convert.FromBase64String(baiduxy.x)))
                                });
                                parameters.Add(new SqlParameter("@imeiLatitude", SqlDbType.Decimal)
                                {
                                    Value = Convert.ToDecimal(Encoding.UTF8.GetString(Convert.FromBase64String(baiduxy.y)))
                                });
                            }
                        }
                    }
                    sqlStr          = sqlStr1 + ")values" + sqlStr2 + ");select @@identity;";
                    cmd.CommandText = sqlStr;
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddRange(parameters.ToArray());
                    cmd.ExecuteScalar();
                    return(1);
                });
            }
            else
            {
                var lng = 0.00D;
                var lat = 0.00D;
                if (oDs.Tables[0].Rows[0]["imeiGLongitude"] != DBNull.Value &&
                    oDs.Tables[0].Rows[0]["imeiGLatitude"] != DBNull.Value)
                {
                    lng = double.Parse(oDs.Tables[0].Rows[0]["imeiGLongitude"].ToString());
                    lat = double.Parse(oDs.Tables[0].Rows[0]["imeiGLatitude"].ToString());
                }
                res = _dBhelper.ExecuteTransaction(cmd =>
                {
                    sqlStr         = "update cy_imeiInfo set ";
                    var parameters = new List <SqlParameter>()
                    {
                        new SqlParameter("@imeiType", SqlDbType.VarChar, 10)
                        {
                            Value = registerDto.ImeiType
                        },
                        new SqlParameter("@imeiVersion", SqlDbType.VarChar, 10)
                        {
                            Value = registerDto.ImeiVersion
                        },
                        new SqlParameter("@imeiStatusNo", SqlDbType.VarChar, 5)
                        {
                            Value = "On"
                        },
                        new SqlParameter("@imeiIp", SqlDbType.VarChar, 25)
                        {
                            Value = registerDto.RemoteIpEndPoint
                        },
                        new SqlParameter("@imeiServerIp", SqlDbType.VarChar, 25)
                        {
                            Value = registerDto.ServerIp
                        },
                        new SqlParameter("@imeiServerOutIp", SqlDbType.VarChar, 25)
                        {
                            Value = registerDto.ServerOutIp
                        },
                        new SqlParameter("@imeiIccid", SqlDbType.VarChar, 20)
                        {
                            Value = registerDto.Iccid
                        },
                        new SqlParameter("@imeimac", SqlDbType.VarChar, 18)
                        {
                            Value = registerDto.ImeiNo
                        },
                        new SqlParameter("@updateUserId", SqlDbType.Int, 4)
                        {
                            Value = -1
                        },
                        new SqlParameter("@updateTime", SqlDbType.DateTime)
                        {
                            Value = DateTime.Now
                        }
                    };
                    if (registerDto.Lng.HasValue && registerDto.Lng != 0D && registerDto.Lat.HasValue && registerDto.Lat != 0D && (Math.Pow(registerDto.Lng.Value - lng, 2) + Math.Pow(registerDto.Lat.Value - lat, 2)) > 0.000001)
                    {
                        var qryres   = CommonCode.GetWebRequest($"http://api.map.baidu.com/geocoder/v2/?location={registerDto.Lat.ToString()},{registerDto.Lng.ToString()}&output=json&ak=WEc8RlPXzSifaq9RHxE1WW7lRKgbid6Y");
                        var location = JsonConvert.DeserializeObject <QryLocation>(qryres);
                        if (location != null && location.status == 0)
                        {
                            sqlStr += "imeiGLongitude=@imeiGLongitude,imeiGLatitude=@imeiGLatitude,imeiAddress=@imeiAddress,imeiProvince=@imeiProvince,imeiCity=@imeiCity,imeiCountry=@imeiCountry,";
                            parameters.Add(new SqlParameter("@imeiGLongitude", SqlDbType.Decimal)
                            {
                                Value = registerDto.Lng
                            });
                            parameters.Add(new SqlParameter("@imeiGLatitude", SqlDbType.Decimal)
                            {
                                Value = registerDto.Lat
                            });
                            parameters.Add(new SqlParameter("@imeiAddress", SqlDbType.NVarChar, 100)
                            {
                                Value = location.result.formatted_address
                            });
                            parameters.Add(new SqlParameter("@imeiProvince", SqlDbType.NVarChar, 20)
                            {
                                Value = location.result.addressComponent.province
                            });
                            parameters.Add(new SqlParameter("@imeiCity", SqlDbType.NVarChar, 20)
                            {
                                Value = location.result.addressComponent.city
                            });
                            parameters.Add(new SqlParameter("@imeiCountry", SqlDbType.NVarChar, 20)
                            {
                                Value = location.result.addressComponent.country
                            });
                            qryres      = CommonCode.GetWebRequest($"http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x={registerDto.Lng}&y={registerDto.Lat}");
                            var baiduxy = JsonConvert.DeserializeObject <BaiDuXy>(qryres);
                            if (baiduxy != null && baiduxy.error == 0)
                            {
                                sqlStr += "imeiLongitude=@imeiLongitude,imeiLatitude=@imeiLatitude,";
                                parameters.Add(new SqlParameter("@imeiLongitude", SqlDbType.Decimal)
                                {
                                    Value = Convert.ToDecimal(Encoding.UTF8.GetString(Convert.FromBase64String(baiduxy.x)))
                                });
                                parameters.Add(new SqlParameter("@imeiLatitude", SqlDbType.Decimal)
                                {
                                    Value = Convert.ToDecimal(Encoding.UTF8.GetString(Convert.FromBase64String(baiduxy.y)))
                                });
                            }
                        }
                    }
                    sqlStr += "imeiType=@imeiType,imeiVersion=@imeiVersion,ImeiOnlineState=@imeiStatusNo,imeiIp=@imeiIp,imeiServerIp=@imeiServerIp,imeiServerOutIp=@imeiServerOutIp,imeiIccid=@imeiIccid,updateUserId=@updateUserId,updateTime=@updateTime where imeimac = @imeimac";

                    cmd.CommandText = sqlStr;
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddRange(parameters.ToArray());
                    cmd.ExecuteNonQuery();
                    return(1);
                });
            }
            return(res);
        }