智慧城市的【Auth】登录对象
2、从“我的”页面开始,显示使用哪儿的数据,需要获取数据。(服务端拉取or本地存储,如果是本地储存,起仍然是服务端的数据,那么便需要在登录的时候将数据储存起来【setUserInfo(userData)】,使用“UserInfo”字段)提取显示数据使用【getUserInfo(callback,errorback)】
3、点击“退出登录”,需要清空“UserInfo”,并且刷新页面为未登录状态,使用【logOut()】。
4、点击“注册”,需要发送验证码【sendCode(phone,callback)】,填写完毕后,【signUp(phone,code,pass,callback)】调用接口向后发服务器发起注册,status==200,让它自己登录【signIn(phone,pass,callback)】,登录成功后,将返回的数据储存【setUserInfo(userdata)】,注册并登录成功后,自动返回,调用【getUserInfo(callback,errorback)】显示个人信息。
5、点击登录【signIn(phone,pass,callback)】,重复注册后半部分的步骤。
7、从账户安全进入的“修改密码”,步骤与上述一致。
8、“个人信息”修改,进入页面,编辑完信息后,【userEdit(userInfo,nickname,avatar,slogan,password,gender,real_name)】更新信息,更新成功后,【updateUserInfo(userdata)】
注:
①callback函数中的内容,主要也看复用性,如果需复用程度大,直接写在对象中,供每个函数调用,如果复用程度低,便使用callback代替,函数在被调用时,如果需要callback,才写入callback。
②callback和errorback的作用,可以分别放在if…else 语句中,在不同的情况下调用。
③在写每一步的时候,都需要考虑该步骤对其他地方是否有影响,进而进行相关的处理。
④在哪些情况下需要sendCode?修改密码的两种情况,注册的情况。
⑤在哪些情况下需要setUserInfo(userData)?在注册成功后登录,单独的登录。
⑥在哪些情况下需要updateUserInfo(userData)?修改了个人资料。
var Auth = {};
$(function() {
var myhost = "http://fresh.ieyuan.com:8021/api";
bridge.connectBridge(function() {
Auth.SetUserInfo = function(userData) {
console.log(userData);
userData = JSON.stringify(userData);
console.log(userData);
bridge.setData("UserInfo", userData);
};
/**
* 更新用户信息
* @param {Object} userData
*/
Auth.UpDateUserInfo = function(userData) {
if(typeof userData == "string") {
userData = JSON.parse(userData);
}
Auth.GetUserInfo(function(info) {
for(var key in info) {
if(userData[key]) {
info[key] = userData[key];
}
}
console.log(info);
console.log(userData);
info = JSON.stringify(info);
bridge.setData("UserInfo", info);
//修改
bridge.dataUpdated();
})
};
/**
*
* @param {Object} callback存在用户信息则调用
* @param {Object} errorback不存在用户信息调用
*/
Auth.GetUserInfo = function(callback, errorback) {
bridge.getData("UserInfo", function(info) {
if(Utils.isEmpty(info)) {
if(errorback) {
errorback("未知登录信息!")
};
} else {
info = JSON.parse(info);
console.log(info);
Auth.UserInfo = info;
var _id = info.id;
if(callback) {
callback(info)
};
}
});
};
Auth.LogOut = function() {
console.log("logOut")
bridge.setData("UserInfo", null);
// bridge.dataUpdated();
};
/**
*
* @param {Object} phone
* @param {Object} code
* @param {Object} pass
* @param {Object} callback获取成功后执行,并传入用户信息
*/
Auth.SignUp = function(phone, code, pass, callback) {
if($.trim(code) == "") {
bridge.showToast("请填写验证码!");
return;
}
if($.trim(phone) == "" || $.trim(pass) == "") {
bridge.showToast("账号或密码格式错误!");
return;
}
bridge.rest.post({
url: myhost + "/signup",
data: {
"phone": phone,
"code": code,
"password": pass
}
}, function(res) {
if(res.status == 200) {
var result;
Auth.SignIn(phone,pass, function(res) {
console.log(res.data);
result=res.data;
bridge.dataUpdated(function(data) {
bridge.finishActivity();
});
});
if(callback) callback(result);
} else {
if(res.data.error_code) {
bridge.showToast(res.data.msg);
} else {
bridge.showToast("注册失败!");
}
}
})
};
/**
*
* @param {Object} phone
* @param {Object} pass
* @param {Object} callback登录成功调用,并出入用户信息
*/
Auth.SignIn = function(phone, pass, callback) {
if(!phone || !pass) {
bridge.showToast("请填写完整的信息!");
return;
}
bridge.rest.get({
url: myhost + "/signin/phone/" + phone + "/password/" + pass
}, function(res) {
console.log(res);
if(res.status == 200) {
Auth.UserInfo = res.data;
Auth.SetUserInfo(res.data);
bridge.showToast("登录成功!");
if(callback) callback(res.data);
} else {
bridge.showToast(res.data.msg);
}
})
};
/**
*
* @param {Object} phone用户电话
* @param {Object} callback发送成功后调用
*/
Auth.SendCode = function(phone, callback) {
if($.trim(phone) == "") {
bridge.showToast("请填写手机号!");
return;
}
console.log(phone)
bridge.rest.get({
url: myhost + "/signin/code/" + phone + "?sms_flag=1215"
}, function(res) {
alert(res.data.code)
if(res.status == 200) {
bridge.showToast("发送成功!");
if(callback) callback(res.data.code);
} else {
if(res.data.error_code) {
bridge.showToast(res.data.msg);
} else {
bridge.showToast("发送验证码失败!");
}
}
})
};
/**
*
* @param {Object} phone电话号码
* @param {Object} code需要验证的电话号
* @param {Object} callback
*/
Auth.ForgetPassVerify = function(phone, code, callback, errorcall) {
if($.trim(code) == "") {
bridge.showToast("请填写验证码!");
return;
}
if($.trim(phone) == "") {
bridge.showToast("账号格式错误!");
return;
}
bridge.rest.get({
url: myhost + "/phone/" + phone + "/code/" + code + "/check"
}, function(res) {
if(res.status == 200) {
if(callback) callback(res.data);
} else {
if(res.data.error_code) {
bridge.showToast(res.data.msg);
} else {
bridge.showToast("验证错误!");
}
errorcall ? errorcall() : "";
}
})
};
Auth.ForgetPassReset = function(phone, newPass, callback) {
if($.trim(newPass) == "") {
bridge.showToast("请填写新密码!");
return;
}
bridge.rest.put({
url: myhost + "/forget-passwd/phone/" + phone,
data: {
"password": newPass
}
}, function(res) {
if(res.status == 200) {
bridge.showToast("重置成功!");
Auth.LogOut();
if(callback) callback(res.data);
// var result;
// Auth.SignIn(phone,newPass, function(res) {
// console.log(res.data);
// result=res.data;
// bridge.dataUpdated(function(data) {
// bridge.finishActivity();
// });
// });
// if(callback) callback(result);
} else {
if(res.data.error_code) {
bridge.showToast(res.data.msg);
} else {
bridge.showToast("重置密码失败!");
}
}
})
};
/**
*
* @param {Object} UID
* @param {Object} nickname
* @param {Object} avatar
* @param {Object} slogan
* @param {Object} password
* @param {Object} gender
* @param {Object} real_name
*/
Auth.UserEdit = function(UserInfo, nickname, avatar, slogan, password, gender, real_name) {
if(Utils.isEmpty(UserInfo)) {
bridge.showToast("信息缺失,请重新登录!");
return;
}
bridge.showProgressDialog("正在修改");
console.log(UserInfo.id);
console.log(UserInfo.token)
console.log(avatar);
bridge.rest.put({
url: myhost + "/user/" + UserInfo.id,
headers: {
"token": UserInfo.token
},
data: {
"nickname": nickname ? nickname : "",
"avatar": avatar ? avatar : "",
"gender": gender ? gender : "",
"slogan": slogan ? slogan : "",
"password": password ? password : "",
"real_name": real_name ? real_name : ""
}
}, function(res) {
console.log(res)
// res = JSON.parse(res);
if(res.status == 200) {
Auth.UpDateUserInfo(res.data);
bridge.showSuccessMsg("修改成功!");
console.log("修改成功!");
$(".save_changes").addClass("locked");
// bridge.showToast("修改成功!");
} else {
if(res.data.error_code) {
bridge.showToast(res.data.msg);
} else {
bridge.showToast("修改失败!");
}
}
})
};
})
})
智慧城市的【Auth】登录对象的更多相关文章
- VR全景智慧城市:360全景市场需要背景及其优势~
VR元年已过,VR项目.VR创业潮转为理性,VR行业分为两个方向:硬件和内容. VR全景,又被称为3D实景,是一种新兴的富媒体技术,其与视频,声音,图片等传统的流媒体大的区别是"可操作,可交 ...
- RFID电动车管理,智慧城市物联网建设的入口
原谷歌CEO施密特说:"我可以非常直接地说,互联网将消失." 互联网在20多年来帮助人们解决了信息共享.交互,几乎在瞬间颠覆了很多传统的商业模式,把卖产品变为卖内容和服务,是个了不 ...
- Django之auth登录认证
前言:我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的 ...
- [转]新型智慧城市总体架构 华为 新ICT 一云二网三平台
本文转自:http://www.jpsycn.com/hangyexinwen/20160801142354.html “十三五”规划提出,充分运用现代信息技术和大数据,建设一批新型示范性智慧城市.日 ...
- VR全景智慧城市-720全景项目行业应用
VR虚拟现实.VR全景概念已成为科技发展热议的焦点.在这样的市场大环境下,全景智慧城市做为一家对大众创新万众创业和用户体验为理念的VR全景城市化信息搜素平台平地而生成为的VR行业领跑者,致力VR全景V ...
- 阿里与腾讯“智慧城市”的O2O谁更强?(分享)
成都亿合科技:本月22日蚂蚁金服联合新浪微博宣布“智慧城市”战略,用户可通过新浪微博.手机淘宝.支付宝三大客户端完成医疗.市政缴费以及相关信息查询工作,首批入驻城市有上海.太原.深圳.青岛等12个城市 ...
- 零售业山重水复,全景行柳暗花明——VR全景智慧城市
对今天的中国来说,寻找经济转型的突破口,寻找经济权力的新霸主,零售业应该当仁不让. 零售业正在经历一场脱胎换骨的改造.一方面零售额达到前所未有的水平,另一方面,传统零售商也面临诸多挑战,其中之一,便是 ...
- 电商的噩梦?实体商家的福音——VR全景智慧城市
我们不知道未来网络购物的样子,但对当前电商平台的问题是清楚的.从消费者角度来看,网购的顾虑主要在于商品的质量难以保证.物流效率不够高,以及网络购物的"眼见不为实". 正因为可以很好 ...
- VR全景智慧城市——“海市蜃楼”般的逛街体验
<史记·天官书>:"海旁蜃气像楼台:广野气成宫阙然." 海市蜃楼,简称蜃景,是一种因为光的折射和全反射而形成的自然现象,是地球上物体反射的光经大气折射而形成的虚像. 2 ...
- 全景智慧城市——NOW!!!VRSHOPPING颠覆你的购物认知!
互联网+时代,人们对现有的网络资源已经不再感冒,一般的图片.文字信息已经无法满足人们对互联网的需求,虚拟现实.身临其境的体验是不可小觑的发展趋势,尤其是VR逛街.购物,更会深入人心,再次改变人们的生活 ...
随机推荐
- MySql启动,提示:Plugin 'FEDERATED' is disabled....Cannot allocate memory for the buffer pool
2016-05-27 09:25:01 31332 [Note] Plugin 'FEDERATED' is disabled. 2016-05-27 09:25:01 31332 [Note] In ...
- Hibernate之二级缓存
Hibernate之二级缓存 一.简介 Gaving King曾经对别人说,hibern ...
- Cassandra 介绍
cassandra是一种NoSQL数据库,No是指No Relational.cassandra的数据模型结合了Dynamo的key/value和BigTable 的面向列的特点,主要被设计为存储大 ...
- HTTP返回码总结(转)
HTTP协议状态码表示的意思主要分为五类 ,大体是 : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1×× 保留 2×× 表示请求成功地接收 3×× 为完成请求客户需进一步 ...
- tornado api 简单模板
# 安装 pip insatll tornado # 主文件 web_server.py #!/usr/bin/env python # encoding: utf-8 import tornado. ...
- 前端网站helper
聚合api 一.颜色类网站http://colorhunt.co 这个网站给我们提供了很多的配色方案,我们直接使用就OK了.使用方法也很简单,鼠标移动到对应的颜色上,我们就可以看到颜色的十六进制码,复 ...
- Json转Java Bean
//json字符串为Bean Device device = JSON.parseObject(jsonString, Device.class); //json字符串转List List<Mo ...
- 【webpy开发实战】webpy的cookbook 个人版
版本:webpy0.3 问题1.1 所需软件及环境配置? 解决办法 sqlite: jinja2:找不到jinja2模块时,将jinja模块文件夹加入 sys.path -> sys.path ...
- unix&linux大学教程 目录
第1章unix简介 第2章什么是linux?什么是unix 第3章unix连接 第4章开始使用unix 第5章gui:图形用户界面 第6章unix工作环境 第7章unix键盘使用 第8章能够立即使用的 ...
- [C#常用代码]类库中读取解决方案web.Config字符串
对于类库里读取解决方案web.config文件里字符串的方法一.读取键值对的方法:1.添加引用using System.Configuration;2.web.Config配置节<appSett ...