Giter Club home page Giter Club logo

cassie_axum's Introduction

cassie_axum

介绍

基于rust axum 完成web端手脚架 基础权限,用户,缓存,验证,代码生成

rust axum web 是rust开发的web手脚架项目 前端项目 https://gitee.com/stringlxd/cassie_admin

项目讲解

B站: https://space.bilibili.com/480402847?spm_id_from=333.788.b_765f7570696e666f.1

项目文档

文档:https://www.yuque.com/heapw/hsr49u/kglmy5

演示地址

http://47.104.64.212/#/login

软件架构

软件架构说明

  1. rust web框架
  2. web:axum
  3. 数据库:mysql
  4. Orm:Ribatis
  5. RBAC:cabin-rs
  6. 验证码:captcha
  7. 数据验证:validator
  8. websocket:tokio-tungstenite

开发计划

  1. 基础缓存定义,ORM框架定义
  2. 返回数据格式定义
  3. 完成casbin的基础RABC权限集成
  4. TODO 微服务集成 KONG网关集成
  5. nacos注册中心集成
  6. 动态表单实现
  7. 微信小程序工具集开发
  8. 租户化实现
  9. javascript动态脚本集成

已完成

  1. 基础缓存定义,redis
  2. orm框架选用Ribatis
  3. casbin-rs集成,适配器编写
  4. 用户权限jwt 融合casbin-rs
  5. 完成nacos注册和心跳集成
  6. 动态表单实现
  7. 租户化实现
  8. javascript动态脚本集成
  9. 自定义javascript playground

使用说明

前置 安装rust开发环境 遵循官网 如果开启了websocket 请放开20003端口 否则连接不到

  1. 初始化DB,添加配置 导入db/cassie_admin.sql文件 配置application.yml
  2. 构建并启动项目 cargo build cago run
  3. 启动前端项目https://gitee.com/stringlxd/cassie_admin 默认端口 9999
  4. 打包 cargo build --package cassie_web --relaese

框架说明

管理员账号:admin/123456 测试账号:lixingdong1/123456

  1. https://casbin.org/docs/zh-CN/overview
  2. https://rbatis.github.io/rbatis.io/#/
  3. https://axum.rs/
  4. https://github.com/denoland/rusty_v8
  5. https://github.com/denoland/deno

参与贡献

String [email protected] 交流群:435604279

感谢Ribatis作者

提示

代码每天都在更新,大家每天及时更新

更新日志

2022.7.27 完成websocket 单聊天室开发

///ws 默认端口20003
///默认连接地址
///access_token 是登录以后的token
///ws://127.0.0.1:20003/?access_token=xxxxxxxx
///链接如果没有token的话会链接不上

2022.5.30 event事件宏定义 开发者无需关注事件如何发送触发 只需要在数据库里配置响应脚本即可

///api_operation event_bus触发器
/// #[api_operation("result=false")] 返回值为Result类型 默认是true   false 
/// #[api_operation("return=true")]  是否传递返回值 到jsRuntime里面 默认是不开启的
/// #[api_operation("result=false|return=true")]多参数同时使用
#[api_operation]
pub async fn nav() -> impl IntoResponse {
    let request_model = get_local().unwrap();
    let vo = get_user_menu_list(request_model.uid().clone().to_string(), request_model.super_admin().clone(), request_model.agency_code().clone()).await;
    vo
}

2022.5.16 完成js playground开发 图片

//获取数据字典     
let  data = Cassie.getAllDict();
for(let i=0;i<data.length;i++){
console.log("name:"+data[i].dict_name);
//获取系统配置
let  data = Cassie.getConfig();
console.log(data.redis_url);
//根据id获取用户
let  data = Cassie.getUserById("1");
console.log(data);
//获取当前登录用户
let request_model = request_context.request_model;
let data = Cassie.getUserById(request_model.uid+"");
console.log(data);

2022.4.25 微信开发

//微信小程序授权登录开发完成
//添加模块 cassie_devtools           

2022.4.17 规则引擎

//js动态脚本解析 添加自定义v8引擎
//添加模块 cassie_engine
//添加模块 cassie_ops           

2022.4.6

//添加登录日志功能
//添加操作日志功能
 //构建操作日志event对象
            let event = CassieEvent::LogOperation {
                operation: Some(action.clone()),
                request_uri: Some(path.clone()),
                ip: None,
                creator_name,
                request_params: None,
                request_method: Some(action.clone()),
                request_time: Some(start.elapsed().as_millis().to_string()),
                status,
            };
            //发布事件
            fire_event(event).await;

2022.4.5

//完成eventBus 1.0开发
//事件基本对象
pub enum CassieEvent {
    Log {},//日志
    Sms {
        sms_type: u8,//消息
    },
    Custom {
        event_type: u8, //自定义事件 1 脚本 2 其他业务分类(待定)
        data: HashMap<String, String>,
    },
}
//发布事件
 let pharos = APPLICATION_CONTEXT.get::<SharedPharos<CassieEvent>>();
        pharos.notify(CassieEvent::Log {}).await;

2022.3.31

完成租户化开发
配置 application.yml
tenant:
  enable: true   //开启租户
  column: "agency_code" //租户字段
  ignore_table:   //忽略表
    - "sys_log_login"

2022.3.29

包结构重新梳理
替换缓存和tread_loacal实现方式

2022.3.18

完成动态表单功能
mongodb 配置 application.yml
```yml
mongodb_url: "mongodb://localhost:27017"
```
1. 业务分组定义 
2. colums定义 mysql存储
3. value使用 mongodb存储
4. 表单类型分为 from 和table
5. entity_id 是业务id

2022.2.22

完成nacos注册和心跳
nacos 配置 application.yml
```yml
nacos_server: "http://127.0.0.1:8848/nacos"
application_name: "cassie_admin"
```

2022.2.15

  1:更新casbin初始化权限脚本
  2:添加 resource/:id 资源验证方式
  3:部分代码重构

cassie_axum's People

Contributors

cassielxd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

cassie_axum's Issues

Cant login: 验证码错误

Hi!

Thank you for great project!

But demo access for both Administrator account: admin/123456 Test account: lixingdong1/123456 gets 验证码错误

How to login?

Now project is using outdated axum v 5.
Do you plan to update to axum 6.x ?

What node version is needed?

Hi!
I tried install cassie_admin with node 16, 18 but get the error:

Now using node v16.19.1 (npm v8.19.3)
bash-5.2$ npm install
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '[email protected]',
npm WARN EBADENGINE   required: { npm: '^1.4.6', node: '^0.10' },
npm WARN EBADENGINE   current: { node: 'v16.19.1', npm: '8.19.3' }
npm WARN EBADENGINE }

What node version is needed?

On assie_admin/issues nobody answer for a week.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.